Domain.comからa.domain.comにCORSリクエストPOSTを作成しようとしています。
私のjavascriptは次のようになります
$('#fileupload').fileupload({
xhrFields: {
withCredentials: true
},
dataType: 'json',
url: $('#fileupload').data('path'),
singleFileUploads: true,
add: function(e, data){
data.submit();
}
});
最初に、OPTIONSルートが次のように呼び出されるのを確認します。
Request URL: https://a.domain.com/some/route
Request Method:OPTIONS
Status Code:200 OK
オプションのリクエスト:
Access-Control-Request-Headers:Origin, content-type, accept
Access-Control-Request-Method:POST
Host:a.domain.com
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home
オプション応答
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST
Access-Control-Allow-Origin:http://domain.com:3000
Connection:keep-alive
Content-Length:0
Content-Type:text/html;charset=utf-8
その要求は、記載されているように200で返されます。私のサーバーでは、POST
メソッドと同じルートがあり、これはOPTIONS
の後に返されるものです
Request URL:https://a.domain.com/some/route
POST REQUEST
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home
POST
リクエストはキャンセル/失敗します。
私の質問は、POSTコントローラーにもaccess-control-allow-Originが必要ですか?
ドメイン.domain.com
を持つリクエスト用のCookieがあります。このCookieはリクエストで一度送信され、現在送信されていません。なぜそうなるのでしょうか?
はい、OPTIONS応答とPOST応答の両方にヘッダーAccess-Control-Allow-Origin: http://domain.com:3000
またはAccess-Control-Allow-Origin: *
が必要です。 POST応答にもヘッダーAccess-Control-Allow-Credentials: true
を含める必要があります。
OPTIONSレスポンスには、リクエストされたヘッダーに一致するヘッダーAccess-Control-Allow-Headers: Origin, content-type, accept
も含める必要があります。