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
标头是请求中包含的非简单标头的逗号分隔列表。您可以设置的唯一“简单”标头是:Accept
、Accept-Language
、Content-Language
、Last-Event-ID
和 Content-Type
(如果设置为以下之一:application/x-www-form-urlencoded
、multipart/form-data
或 @ 987654332@).
服务器必须响应预检请求中的Access-Control-Request
标头,并在其响应中使用相应的Access-Control-Allow
标头。所以在你的情况下,它需要回复Access-Control-Allow-Headers: key1, key2
。
【讨论】:
以上是关于xhr.setRequestHeader() 合并我的标题的主要内容,如果未能解决你的问题,请参考以下文章