69

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リクエスト

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryjwr5Pk7WBcfzMdbO
Origin:http://domain.com:3000
Referer:http://domain.com:3000/home

POSTリクエストはキャンセル/失敗します。

私の質問は、POSTコントローラーにもaccess-control-allow-originが必要ですか?

リクエストでCookieが一度送信されたドメイン.domain.comを含む承認用のCookieがありますが、現在は送信されていません。なぜそれが起こるのか考えていますか?

4

1 に答える 1

91

はい、ヘッダーを付けるAccess-Control-Allow-Origin: http://domain.com:3000Access-Control-Allow-Origin: *、OPTIONS応答とPOST応答の両方に含める必要があります。Access-Control-Allow-Credentials: truePOST応答にもヘッダーを含める必要があります。

OPTIONS応答にはAccess-Control-Allow-Headers: origin, content-type, accept、要求されたヘッダーと一致するヘッダーも含める必要があります。

于 2012-09-28T01:31:40.893 に答える