使用AJAX发送HTTP跨域请求

时间:2014-09-29 16:57:24

标签: javascript ajax http cross-domain cors

我正在尝试使用带有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,我想要它。如果我将此请求发送到同一个域,我可以看到有效负载。有什么问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

Cross Origin Resource Sharing一起使用的OPTIONS请求没有有效负载。这是一个“预检”请求,以确定服务器是否允许来自您的来源的CORS。使用正确的CORS标头回复OPTIONS请求后,您将收到包含数据的PUT请求。

请参阅链接了解详情,但基本上是:

  • 浏览器使用CORS请求标头发送OPTIONS
  • 服务器决定该请求是否可以从该来源接受,如果是,则使用适当的CORS响应头进行响应。
  • 浏览器使用实际的PUT进行回复。

这对您的客户端ajax代码(但不是您的服务器代码)是透明的。