Tomcat 8に配備されたRESTサービスをAngular 4から呼び出そうとしています。これらは両方とも別々のドメインで実行されているため、CORSの問題が予想されます。だから、Tomcatの/ confに/ web.xmlに、私は以下のフィルタを追加したCORS - Tomcatのrestサービスを角から呼び出す
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Authorization,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
これは私が認証を送っています、以来、私は角
var basicOptions:RequestOptionsArgs = {
url: 'http://server3:7000/myrest/info',
method: RequestMethod.Get,
search: null,
headers: new Headers(
{'Authorization': 'Basic AG1hZG1pbjpkZW1vLmRlbW8=' },
),
body: null
};
basicOptions.headers.append('Content-Type', 'application/json');
var reqOptions = new RequestOptions(basicOptions);
var req = new Request(reqOptions);
return this.http.request(req);
からのGETリクエストを送信しています方法ですヘッダでは、Tomcatの 'cors.allowed.headers'パラメータにも追加されています。
ChromeからRESTサービスを呼び出すと、常に[無効なCORSリクエスト]エラー([ネットワーク]タブ - > [プレビュー])が表示されます。以下はブラウザのコンソールのエラーです
XMLHttpRequestはhttp://server3:7000/myrest/infoをロードできません。応答 要求をプリフライトするとアクセス制御チェックを通過しません。いいえ 要求された リソースに 'Access-Control-Allow-Origin'ヘッダーが存在します。したがって、「http://localhost:4200」の原点は許可されません。 応答にHTTPステータスコード403がありました。
動作させるために何か他に必要なことはありますか?
これはAngularとは関係ありません。 CORS要求をサポートし、必要なヘッダーで応答するようにサーバーを構成する必要があります。 –