CORS预检OPTIONS请求返回错误,但仍然发送POST

时间:2013-01-17 12:11:41

标签: javascript ajax post cross-domain cors

我正在使用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请求,该服务未配置为当前处理,因此它返回500 (Internal Server Error)405 (Method Not Allowed)

收到此错误后,我希望浏览器忽略POST请求并返回错误,但是:

在Chrome& IE 仍然发送POST请求(服务已正确配置以处理)并收到响应。

在Firefox 中,POST只会返回错误。

有人可以解释为什么这在Chrome中有效吗?我原以为它会表现出Firefox的表现。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

即使OPTIONS请求失败,也有bug in ChromeWebKit发送后续请求。

Firefox正确遵循CORS规范,并在预检失败后取消请求。