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请求之前是一个预检OPTIONS请求,该服务当前未配置为处理该请求,因此它返回 a500 (Internal Server Error)或 a 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 回答