2016-08-11 10 views
3

2XX以外のステータスコード応答には、Access-Control-Allow-Origin,Access-Control-Allow-MethodsAccess-Control-Max-AgeなどのCORS固有のヘッダーが含まれていますか?それはクライアントにとっても意味をなさないでしょうか?例えば2xx以外のステータスコード応答にCORS固有のヘッダーが含まれている必要があります

➜ api git:(master) ✗ curl -i http://127.0.0.1:9000/dfas 
HTTP/1.1 404 Not Found 
Connection: close 
Server: Node.js v6.3.1 
Cache-Control: no-cache, no-store 
Access-Control-Max-Age: 300 
Access-Control-Allow-Origin: * 
Content-Type: application/json 
Content-Length: 60 
Date: Thu, 11 Aug 2016 22:58:33 GMT 

{"code":"ResourceNotFound","message":"/dfas does not exist"} 

答えて

3

はい、それはサーバーでも非の2xx応答とCORSヘッダを送信させる意味があります。その理由は、レスポンスにCORSヘッダーがなければ、2xx以外のレスポンスコードはJavaScriptクライアント(FetchまたはXHRを介して)に公開されないからです。応答コードはdevtoolsコンソールに表示されますが、 ではCORSヘッダーがなくても、クライアントJavaScriptがプログラムによって判断できる唯一のことは、エラーが発生したがエラーのレスポンスコードではないことです。

JavaScriptクライアントがレスポンスコードに基づいて有用なエラー処理を実行できるようにするには、サーバーは2xx以外の応答でもCORSヘッダーを送信する必要があります。

+0

ありがとう、まさに私も同様に考えていた。 – Justin

+0

ええ、sideshowbarkerが正しい答えを持っています。 CORSは、ブラウザに応答を共有することが安全であることを伝える単なる方法です。エラー応答の共有は、デバッグに非常に役立ちます。そこにCORSを使用しない場合は、接続を閉じるだけのサーバーに相当します。 – Anne

関連する問題