jQuery$.ajax发送请求时候为啥会报拒绝设置不安全的header?

因为用 xhr 无法设置 cookie 字段。var xhr = new XMLHttpRequest();xhr.open(\u0026#39;GET\u0026#39;,\u0026#39;/\u0026#39;,true);xhr.setRequestHeader(\u0026#39;cookie\u0026#39;,\u0026#39;1\u0026#39;); // Error: Refused to set unsafe header "cookie"
■网友
浏览器不允许用户手动设置敏感的Http header包括但不限于cookiehostreferer
■网友
为了安全,跨域XHR对象有一些限制:不能使用 setRequestHeader() 设置自定义头部不能发送和接收 cookie调用 getAllResponseHeaders() 方法总会返回空字符串参考:1.《JavaScript高级程序设计(第3版)》 - 21.4.2 其他浏览器对 CORS 的实现jQuery$.ajax发送请求时候为啥会报拒绝设置不安全的header?


■网友
【jQuery$.ajax发送请求时候为啥会报拒绝设置不安全的header?】 这种问题还是要看标准的XMLHttpRequet相关接口的定义,设置request header头的时候,有些name是被禁止的:
jQuery$.ajax发送请求时候为啥会报拒绝设置不安全的header?

文档已经列出了这些被禁止的name:
jQuery$.ajax发送请求时候为啥会报拒绝设置不安全的header?

所以,碰到这种问题最快捷的方法是直接看官方文档。
https://xhr.spec.whatwg.org/#the-setrequestheader()-method

■网友
有没有解决的方法呢?遇到了同样的问题
■网友
https://www.owasp.org/index.php/HTTP_Request_Smuggling


    推荐阅读