2

MDN Access Cotrol docには、資格情報を使用したGETリクエストはプリフライトされていません。しかし、レスポンスヘッダーにAccess-Control-Allow-Credentialsが含まれていない場合、trueを指定すると、呼び出し側のクライアントはレスポンスを利用できなくなります。この動作がPOST(資格情報付きの単純なPOSTリクエスト - コンテンツタイプはフォームデータかもしれません)リクエストでも同じように動作する場合、POSTがサーバーの状態を変更する可能性があります。この仮定は正しいですか?CORSでは、プリフライトされたクレデンシャルを使用したPOSTリクエストですか?

またはPOSTリクエストのクレデンシャルは事前にフライトされていますか?

答えて

1

プリフライトリクエストは、サーバーが明示的に許可しない限り、ブラウザが特定の種類の要求をサーバーに送信しないようにするためのものです。ただし、ブラウザは、CORSサポートの出現前に、資格のあるPOSTリクエストをサーバーに直接送信することができます。

"Security Considerations" part of the CORS specは(強調鉱山)言う:GETまたはPOSTまたはスクリプトから生じるクロスオリジンGETリクエストを使用して、このようなクロス原点フォーム提出、本明細書の外部で生成

単純クロス原点要求(要素)には通常ユーザーの資格情報が含まれるため、この仕様に準拠するリソースは、資格情報がの単純なクロスオリジン要求を期待するように準備する必要があります。言い換えれば

、資格認定POSTリクエストがプリフライトなしでサーバーに到達持っている能力は、新しいものではありません:ブラウザは<form>秒をサポートするので、開発者は、それがこれまでに実現することができました。したがって、認証されたPOST要求を含むAjaxのプリフライトを要求することにはメリットはありません。

関連する問題