使用AJAX发送HTTP跨域请求



我正试图用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代码是透明的(但对服务器代码不是透明的)。

相关内容

  • 没有找到相关文章

最新更新