xhr.setRequestHeader() 合并我的标题

Posted

技术标签:

【中文标题】xhr.setRequestHeader() 合并我的标题【英文标题】:xhr.setRequestHeader() merging my headers 【发布时间】:2014-06-16 16:44:38 【问题描述】:

我想在我的 xhr 中添加标题。

当我使用 setRequestHeader 时,它的实际作用是向 Access-Control-Request-Headers 添加一个值。

如果我编码:

xhr.setRequestHeader('key1', 'value1');
xhr.setRequestHeader('key2', 'value2');

我在请求标头中看到的是: Access-Control-Request-Headers:accept, key1, key2

我希望看到的是:

键1:值1

键2:值2

如何防止这种合并? 谢谢!

【问题讨论】:

【参考方案1】:

您正在制作一个非简单的跨域 XMLHttpRequest (read more about CORS here),这意味着您的浏览器必须在您的预期请求之前发送一个预检 (OPTIONS) 请求。这样做是为了向服务器验证是否允许来自不同来源的客户端发出所述请求。当您发出 CORS 请求时,浏览器会在发送请求时自动将 Access-Control-Request 标头添加到请求中。

Access-Control-Request-Headers 标头是请求中包含的非简单标头的逗号分隔列表。您可以设置的唯一“简单”标头是:AcceptAccept-LanguageContent-LanguageLast-Event-IDContent-Type(如果设置为以下之一:application/x-www-form-urlencodedmultipart/form-data 或 @ 987654332@).

服务器必须响应预检请求中的Access-Control-Request 标头,并在其响应中使用相应的Access-Control-Allow 标头。所以在你的情况下,它需要回复Access-Control-Allow-Headers: key1, key2

【讨论】:

以上是关于xhr.setRequestHeader() 合并我的标题的主要内容,如果未能解决你的问题,请参考以下文章

使用AJAX请求OAuth2令牌

jquery ajax怎么通过header传递参数

XHR post请求下载文件

graphql pass arg

Javascript中的复杂字符串

Node.js - 强大的 XHR 上传