2017-01-25 18 views
6

ローカルのWebサービスに対して、302の応答が返され、ヘッダー内の場所が返されると期待しています。しかし、私は要求が提供されていることをローカルで見ることができ、応答はWebサービスでエラーなしで作成されていますが、未定義の応答とネットワークエラーが発生します。302レスポンスエラー

私はPostmanとChromeで試して、リダイレクトレスポンスを受信して​​それに応じてリダイレクトします。

これがCORSの問題であるかどうかわからない場合は、どうすれば解決できますか?

I既にCORSフィルタ

Access-Control-Expose-Headers: Location, [own headers] 
Access-Control-Allow-Origin: '*' 
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS, DELETE 
Access-Control-Max-Age: [some age] 
Access-Control-Allow-Headers: [own headers] 

に対するレスポンスヘッダに追加していると私はポストマン

私はAxiosを使用して作っていや設定が要求を使用する場合、場所はヘッダ内に存在します

const config = { 
    url: [someURL], 
    method: 'GET', 
    headers: { 
    'customHeader':'token', 
    }, 
    params: { 
    [params] 
    }, 
    maxRedirects: 0, 
    validateStatus: status => (status >= 200 && status < 300) || status === 302, 
}; 

私のJSコードに到達したときのレスポンスは未定義ですが、PostmanとChromeでは正常に動作する理由については助けてください。

これを解決できる方法は、HTTPステータスコード200を使用してリダイレクトするための場所ヘッダーを取得することですが、技術的にはリダイレクト応答であるため、これを避けたいと思います。

+0

おそらく 'readyState'ステータスを確認し、' HEADERS_RECEIVED'(https://xhr.spec.whatwg.org/)を探してみることができます。これもhttp://stackoverflow.com/questions/228225/prevent-redirection-of-xmlhttprequest answerにチェックしてください。 –

+0

しかし、ステータスや応答のボディやヘッダーが含まれていない未定義の応答が返ってきます – diepjy

答えて

2

'customHeader':'token'ご要望の一部triggers your browser to first send a CORS preflight OPTIONS requestCORS-safelisted request-headersと定義されたヘッダー以外の要求に追加するすべてのヘッダーは、CORSプリフライトOPTIONS要求を送信するブラウザをトリガーします。

Postmanからこれを取得しない理由は、ブラウザエンジンとは異なり、PostmanはCORSを実装していないため、OPTIONS要求を送信しないからです。

サーバーがCORSプリフライトOPTIONS要求に適切に応答しない場合、要求は失敗し、唯一のエラーメッセージは表示されません(郵便配達員は、Webアプリケーションのためにブラウザと同じ原点のWebセキュリティモデルで動作しません)。この問題を回避するには、リクエストに'customHeader':'token'部分を追加しないでください。そうしないと、ブラウザがCORSプリフライトを実行するような方法でリクエストを作成しないでください。

+0

CORSプリフライトOPTIONS要求で、GET、POST、DELETE、PUT、OPTIONを正しく動作させる他のエンドポイントがあります。 302応答を返します。私はあなたが "CORSプリフライトを行うためにあなたのブラウザを起動させる何らかの要求を作成する"ということがどういう意味かはっきりしていません。これは私のリクエストに位置ヘッダを追加しなければならないということですか? – diepjy