jquery – AJAX在Chrome中发送OPTIONS,而不是GET/POST/PUT/DELETE?

前端之家收集整理的这篇文章主要介绍了jquery – AJAX在Chrome中发送OPTIONS,而不是GET/POST/PUT/DELETE?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在工作的内部Web应用程序。在IE10请求工作正常,但在Chrome所有的AJAX请求(有很多)使用OPTIONS发送,而不是任何定义的方法我给它。技术上我的请求是“跨域”。该网站在localhost:6120上,我发出AJAX请求的服务是在57124. This closed jquery bug定义了问题,但不是一个真正的修复。

我可以做什么在ajax请求中使用正确的http方法

编辑:

这是在每个页面的文档加载:

jQuery.support.cors = true;

每个AJAX都是类似的:

var url = 'http://localhost:57124/My/Rest/Call';
$.ajax({
    url: url,dataType: "json",data: json,async: true,cache: false,timeout: 30000,headers: { "x-li-format": "json","X-UserName": userName },success: function (data) {
        // my success stuff
    },error: function (request,status,error) {
        // my error stuff
    },type: "POST"
});

解决方法

Chrome会预先检查请求以查找 CORS标头。如果请求是可接受的,则它将发送真实请求。如果你在做这个跨域,你只需要处理它或者找到一种方法,使请求非跨域。这是为什么jQuery错误关闭为won’t-fix。这是设计。

Unlike simple requests (discussed above),“preflighted” requests first
send an HTTP request by the OPTIONS method to the resource on the
other domain,in order to determine whether the actual request is safe
to send. Cross-site requests are preflighted like this since they may
have implications to user data. In particular,a request is
preflighted if:

  • It uses methods other than GET,HEAD or POST. Also,if POST is used to send request data with a Content-Type other than
    application/x-www-form-urlencoded,multipart/form-data,or text/plain,
    e.g. if the POST request sends an XML payload to the server using
    application/xml or text/xml,then the request is preflighted.
  • It sets custom headers in the request (e.g. the request uses a header such as X-PINGOTHER)
原文链接:https://www.f2er.com/jquery/185206.html

猜你在找的jQuery相关文章