我正在工作中开发一个内部web应用程序。在IE10中,请求可以正常工作,但在Chrome中,所有AJAX请求(有很多)都是使用选项发送的,而不是使用我定义的方法。从技术上讲,我的请求是“跨域”的。该站点是在localhost:6120上提供的,而我向其发出AJAX请求的服务是在57124上提供的。这个关闭的jquery错误定义了问题,但不是真正的修复
如何在ajax请求中使用适当的http方法
编辑:
这是在每页的文档加载中:
jQuery.support.cors=true;
每个AJAX的构建都是类似的:
var-url=”http://localhost:57124/My/Rest/Call';
$.ajax({
url:url,
数据类型:“json”,
数据:json,
async:true,
cache:false,
超时:30000,
标题:{“x-li-format”:“json”,“x-UserName”:UserName},
成功:功能(数据){
//我的成功经验
},
错误:功能(请求、状态、错误){
//我的错误
},
类型:“职位”
});
Chrome正在预处理请求以查找CORS头。如果请求可以接受,那么它将发送真正的请求。如果您正在跨域执行此操作,您只需处理它,或者找到一种方法使请求不跨域。这就是为什么jQuery错误被关闭,因为它不会修复。这是故意的
与上面讨论的简单请求不同,“预飞行”请求优先
通过OPTIONS方法向上的资源发送HTTP请求
其他域,以确定实际请求是否安全
发送。跨站点请求是这样预处理的,因为它们可能
对用户数据有影响。特别是,请求是
如果:
- 它使用的方法不是GET、HEAD或POST。此外,如果POST用于发送内容类型不是的请求数据
application/x-www-form-urlencoded、多部分/表单数据或text/plain,
e、 g.如果POST请求使用
application/xml或text/xml,则请求被预引导- 它在请求中设置自定义标头(例如,请求使用诸如X-PINGOTHER之类的标头)