为了账号安全,请及时绑定邮箱和手机立即绑定

Chrome中的AJAX发送OPTIONS而不是GET / POST / PUT / DELETE?

Chrome中的AJAX发送OPTIONS而不是GET / POST / PUT / DELETE?

紫衣仙女 2019-08-12 16:17:45
Chrome中的AJAX发送OPTIONS而不是GET / POST / PUT / DELETE?我正在开发一个内部Web应用程序。在IE10中,请求工作正常,但在Chrome中,所有AJAX请求(有很多)都是使用OPTIONS发送的,而不是我给出的任何定义的方法。从技术上讲,我的请求是“跨域”。该站点在localhost:6120上提供,我正在向AJAX请求的服务是在57124. 这个关闭的jquery错误定义了问题,但不是真正的修复。如何在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"});
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

Chrome正在预检查找CORS标头的请求。如果请求是可接受的,它将发送实际请求。如果您正在执行此跨域,您只需处理它,或者找到一种方法来使请求成为非跨域。这就是为什么jQuery bug被关闭为不能修复的原因。这是设计的。

与简单请求(如上所述)不同,“预检”请求首先通过OPTIONS方法向另一个域上的资源发送HTTP请求,以便确定实际请求是否可安全发送。跨站点请求是这样预检的,因为它们可能对用户数据有影响。特别是,如果出现以下情况,请求会被预检:

  • 它使用GET,HEAD或POST以外的方法。此外,如果POST用于发送具有除application / x-www-form-urlencoded,multipart / form-data或text / plain之外的Content-Type的请求数据,例如,如果POST请求将XML有效负载发送到服务器使用application / xml或text / xml,请求预检。

  • 它在请求中设置自定义标头(例如,请求使用诸如X-PINGOTHER之类的标头)


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 789 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信