1

次のように、jQuery ajax を使用して、自分のサイトから asmx サービスへのクロスドメイン リクエストを作成しています。

$j.ajax({
  url: svcURL,
  type: "POST",
  data: xml,
  contentType: "text/xml",
  dataType: "text",
  success: function(d) {
    alert(d);
  },
  error: function(a, b, c) {
    alert("error");
  }
});

このPOSTリクエストは、サービスが現在処理するように構成されていないプリフライト リクエストの前にあるため、 aまたは のOPTIONSいずれかで返されます。500 (Internal Server Error)405 (Method Not Allowed)

このエラーを受け取った後、ブラウザはPOSTリクエストを無視してエラーを返すと思いますが、次のようになります。

Chrome と IEでは、POSTリクエストは引き続き送信され (サービスが処理するように正しく構成されています)、応答が受信されます。

Firefox ではPOST単にエラーが返されます。

これがChromeで機能する理由を誰かが説明できますか? Firefox と同じように動作することを期待していたでしょう。

事前に助けてくれてありがとう。

4

1 に答える 1

0

ChromeWebKitには、リクエストが失敗しても後続のリクエストを送信するバグがありOPTIONSます。

Firefox は CORS 仕様に正しく従い、プリフライトが失敗するとリクエストをキャンセルします。

于 2013-04-01T19:51:11.497 に答える