2017-03-29 8 views
1

Ajaxのクロスドメインリクエストを作成する際に奇妙な問題が発生しました。私はクロームのdevのツールのコンソールで、次のエラーが表示されます。要求されたリソースエラーに 'Access-Control-Allow-Origin'ヘッダーが存在しません。リクエストは成功しましたが、失敗がトリガーされました

いいえ「アクセス制御-起源許可」私はネットワーク要求を見ると、ヘッダが

しかし、要求されたリソースのエラーに存在し、それをCORSのプリフライトリクエストをブラウザに渡します。なぜならリクエストがGETへのプリフライトリクエストに失敗したときのOPTIONSからの変更であり、レスポンスは郵便配達員の場合と同じです。しかし、Ajaxのエラーメッセージが表示されるので、開発ツールではリクエストが成功したように見えますが、JavaScriptを介して正常なレスポンスにアクセスすることはできません。

追加情報として、ajaxリクエストを作成しているファイルは、ファイルディレクトリから直接開くインラインJavaScriptを持つHTMLファイルです。私はこれが私の問題かもしれないと思っていますが、これを明示的に言うものは何も見つかりませんでしたので、私は確認を求めています。 APIに関して

注:適切なアクセス制御ヘッダはあなたがいくつか渡す必要が

+0

"ステータスが200であるため、CORSプリフライトリクエストをブラウザに渡します。" - HTTPステータスとプリフライトリクエスト(存在する場合)を渡す機能が接続されていません。 CORSの仕様で指定されているヘッダーのみが重要です。 – Quentin

+0

申し訳ありませんが、OPTIONSリクエストからGETリクエストに変更されるため、これらのヘッダをすべてサーバ側に設定しました。プリフライトリクエストを渡しているようです。それは技術的に正しいか、それとも間違っていますか? – TripWire

+0

"私はこれらすべてのヘッダーをサーバー側に設定しました" - ブラウザはあなたにしていないと言います – Quentin

答えて

0

設定されている、すべての応答を事前に反応していないだけで(すべてではないが、私はチェックしていません)フライトOPTIONSリクエスト。

+0

申し訳ありませんが、これについて少し詳しく説明できますか?私は本当に理解していない。 GETリクエスト(以前はプリフライトリクエストで失敗していました)が、オプションリクエストに応答するように適切なヘッダーを設定することで修正されました。例えば、access-control-allow-domain:*は次のリクエストです。データが返ってくるが、まだjsの失敗メソッドにぶつかっている – TripWire

+0

私はaccess-control-allow-headers:[HEADERS]とaccess-control-allow-methods:[METHODS]を追加しました。私が今コードから離れているからです。 – TripWire

+0

'OPTIONS'レスポンスに適切なヘッダーを追加するだけでは不十分です。ブラウザが応答するたびに、CORSヘッダーの一部またはすべてを*すべてのレスポンスに追加する必要があります。 –

関連する問題