2017-07-07 29 views
1

私はサーバに単純なiron-ajaxの投稿をしようとしていましたが、プリフライトコールで失敗し続けます。私の人生にとって何が起こっているのか分かりません。すべてのCORSヘッダーはサーバー上で正しいようです。preflight 403の応答が禁止されています

Response headers

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:Content-Type 
Access-Control-Allow-Methods:GET, POST, PUT, OPTIONS 
Access-Control-Allow-Origin:* 
cache-control:must-revalidate, private, no-cache, no-store, max-age=0 
Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:138 
Content-Type:text/html 

Request headers

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:content-type 
Access-Control-Request-Method:POST 
Cache-Control:no-cache 
Connection:keep-alive 

要求が実際にローカルホストから作られているが、私は*はそれの世話をするべきであると考えているだろう。コンソールに表示されている

エラーは以下のとおりです。 OPTIONS https://... 403 (Forbidden)

XMLHttpRequest cannot load https://.... Response for preflight has invalid HTTP status code 403 

すべてのヘルプ/アドバイスが高く評価されています。

+0

ブラウザのdevtoolsコンソールに表示される正確なエラーメッセージは何ですか?質問を編集/更新して、その情報を含めるようにしてください – sideshowbarker

+0

'OPTIONS https:// ... 403(禁止)'と 'XMLHttpRequestはhttps://を読み込めません...プリフライトのレスポンスに無効なHTTPステータスコード403があります' – DVM

+1

So OPTIONSリクエストのプリフライトだけでなく、OPTIONSリクエストを処理するようにサーババックエンドが設定されていないという一般的な問題を示しています。サーバーは2xx-200または204のOPTIONS要求に応答する必要があります。そうでなければ、送信するように設定されているAccess-Controlヘッダーの違いはありません。そして、正しい方法でOPTIONS要求を処理するようにサーバーを構成する方法(200または204成功メッセージを送信する方法)は、実行中のサーバーソフトウェアによって異なります。 – sideshowbarker

答えて

2

403応答ステータスは、CORSプリフライトOPTIONSリクエストだけでなく、OPTIONSリクエストを処理するようにサーバーバックエンドが設定されていないという一般的な問題を示しています。サーバーがそれを行わない場合は

サーバが2XXの成功ステータス-典型的には200または204

OPTIONS要求に応答しなければならない、それはあなたがそれを送信するように設定したものAccess-Control-*ヘッダ違いはありません。 リクエストを正しい方法で処理するようにサーバーを構成する方法 - 200または204の成功メッセージを送信する - どのサーバーソフトウェアが実行されているかによって異なります。

+0

もう1つの質問:Postmanと同じ呼び出しを試しても問題ありません。それは別の問題かもしれないということですか? – DVM

+1

PostmanでPOSTリクエストに対する応答が正常に機能していれば、PostmanはPOSTリクエストを試行する前にプリフライトOPTIONSリクエストを作成しないため、期待通りです。ブラウザだけがプリフライトOPTIONSリクエストを行い、XHRによるリクエスト/ Fetch/Ajaxは特定の起点のブラウザで実行されているフロントエンドのJavaScriptコードから呼び出します(Postmanはそうではありません)。しかし、あなたが代わりに郵便配達でOPTIONSリクエストを作ろうとしていて、403を取得しなかったとしたら、それは別の問題を示すでしょう – sideshowbarker

関連する問題