我正试图用AJAX的PUT方法发送一个HTTP跨域请求。
为此,我使用这个:
$.ajax({
url: ipv6Nodo+"/config?param=led",
crossDomain: true,
type: 'PUT',
data: "ls=ON",
success: function(data) {
// Do something with the result
console.log(data);
}
});
我在中间嗅了嗅,我看到我真的在用OPTIONS方法发送请求。这不是问题所在,因为在服务器上我可以类似地接受PUT或OPTIONS。问题是有效负载请求是空的,没有ls=ON
,我想要它。如果我把这个请求扔到同一个域,我可以看到有效负载。怎么了?
提前感谢
跨来源资源共享使用的OPTIONS
请求没有有效负载。这是一个"飞行前"请求,目的是了解服务器是否允许来自您的原产地的CORS。一旦您用正确的CORS头响应OPTIONS
请求,您就会得到带有数据的PUT
请求。
请参阅链接了解详细信息,但基本上:
- 浏览器发送带有CORS请求头的
OPTIONS
- 服务器决定是否可以接受来自该来源的请求,如果可以,则使用适当的CORS响应头进行响应
- 浏览器以实际的
PUT
进行响应
这对客户端ajax
代码是透明的(但对服务器代码不是透明的)。