在Ajax中发送跨域请求时发送头部信息

11 浏览
0 Comments

在Ajax中发送跨域请求时发送头部信息

我需要将UserID作为请求头传递,但是我无法在跨域URL的请求头中传递它。

以下是Ajax请求的截图,其中我得到了Accept-Control-Request-Header: UserID,但是当我使用$.ajax() headers选项传递它时,它不会显示在Firebug的Headers Tab中。

我也尝试了beforeSend选项,但没有进展。

以下是我使用的示例代码:

headers: {'UserID': 12345 },
dataType: 'jsonp',
crossdomain: true,
beforeSend: function (request) {                
      request.withCredentials = true;
      request.setRequestHeader("UserID", "1");
      request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
      request.setRequestHeader("Access-Control-Allow-Origin", "*");
},

我还参考了以下所有SO链接:

  1. jQuery JSONP ajax,身份验证头未设置
  2. 我可以在跨域JSON请求中设置头吗?
  3. 修改JSONP请求的HTTP头

有办法在Firebug Headers tab中显示请求头吗?还是服务器端安全性阻止了请求头。

0
0 Comments

最终,我找到了解决办法。

问题其实不在我这边(客户端),而是在服务器端,服务器不允许我发送头部信息。通过在服务器端允许跨域请求参数,问题得以解决。

服务器需要做哪些改变才能允许这些请求?

服务器由客户提供,所以我不知道他做了哪些改变。但是enable-cors.org/server.html可能对你有帮助。

0