0
私のプロジェクトにはいくつかのサービスがあります。 user.service.t.js 一部のサイトにリクエストを希望します。 sites.comとサイトのコンテンツを取得します。私はそれを行う、それは以下を書いている。私はこれを行うことができますどのようにangular2のあるサイトへのリクエスト
XMLHttpRequest cannot load http://www.sites.com/. Response for preflight is invalid (redirect)
error_handler.js:45 EXCEPTION: Response with status: 0 for URL: null.
:
getSites(user) {
let body = JSON.stringify(user);
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Access-Control-Allow-Headers', 'Content-Type');
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Access-Control-Allow-Credentials', "true");
headers.append('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
var requestoptions = new RequestOptions({
method: RequestMethod.Get,
url: "http://www.joomag.com/",
headers: headers,
withCredentials: true
})
return this.http.post("http://www.sites.com/", <RequestOptionsArgs> {withCredentials: true, headers: headers})
.map((res: Response) => {
if (res) {
return { status: res.status, json: res.json() }
}
});
}
はしかし、私はこのエラーを取得します。
リモートサイトへのリクエストを行うためにエクスプレスサーバーを使用すると、正常に動作します。今度は、サービスang2経由で請求したいと思います。 jsonpを使うと、私にとってはうまくいきません。 –
これはCORSであり、ブラウザ機能なので、サーバーからリクエストを送信すると、このようなことは起こりません。あなたが必要なヘッダーを送信するようにサーバーを設定するか、かなりの制限(カスタムヘッダーなし)を持つJSONPを使用することができます。それ以外の場合は不運です。別の方法として、独自のサーバーに要求を行い、サーバーから実際に接続したいサーバーに要求を転送することができます(CORSはブラウザーにのみ影響するため)。 –