Nic*_*ick 7 javascript jquery cors
我正在尝试使用jQuery.ajax()创建一个跨源GET请求.我的服务器配置为接受此类请求.Chrome不允许我发送标题:
访问控制请求法
访问控制请求报头
拒绝设置不安全标头"Access-Control-Request-Method"< - 错误消息
这是我的ajax请求:
$.ajax({
type:"GET",
headers: {
'Access-Control-Request-Method' : 'GET',
'Access-Control-Request-Headers': 'X-Custom'
},
url: "http://localhost:3000",
success: function(msg) {
console.log(msg);
}
});
Run Code Online (Sandbox Code Playgroud)
我期待这些标题导致浏览器创建一个与服务器协商的飞行前请求(OPTIONS).我知道我之前已经完成了这个.有人能告诉我我忘记了什么吗?
非常感谢!
如果请求不是简单请求,则跨域请求会自动发生 PREFLIGHT 选项请求。简单请求通常是 GET 请求。因此,如果您发出跨域 GET 请求,则不会出现预检 OPTIONS 请求。
但是,如果您发出跨域 POST 请求,浏览器将首先发出预检 OPTIONS 请求,而无需您指示它这样做。此请求的目的是查看服务器是否允许来自您客户端的域/IP 的跨域 POST 请求。
如果您的服务器在响应中具有正确的“Access-Control”标头,也就是说,是的,允许该客户端发出跨域 POST 请求,那么浏览器将继续发出 POST 请求。如果您的服务器说“否”(因为您服务器上的“Access-Control”标头是错误的),那么浏览器将尊重这一点,并且不会发出第二个 POST 请求。
请参阅https://www.html5rocks.com/en/tutorials/cors/#toc-handling-a-not-so-simple-request了解更多信息。
另外,您必须确保您的服务器设置为处理传入的 OPTIONS 请求。
归档时间: |
|
查看次数: |
6968 次 |
最近记录: |