我想知道为什么不能设置cookie使用 setRequestHeader 来设置标头。是否有任何特定原因或只是它们是由浏览器本身添加的,因此这些标头被禁用?是否存在安全问题?
--Edit
我正在使用 Node.js 并使用xmlhttprequest
模块。以下是测试代码:
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.withCredentials = true;
xhr.setRequestHeader('Cookie', "key=value");
xhr.send(null);
这里我需要将 cookie-header 设置为node.js' xmlhttprequest
不要显式添加 cookie-header(如浏览器那样)。当尝试这样做时,xmlhttprequest
给出错误“Refused to set unsafe header
".
虽然我已经找到了补丁并成功发送了 cookie 标头。但想知道为什么它不能设置 cookie-header?无论我在哪里读到,都发现它是数据完整性和安全性所必需的,但在这种情况下可能会破坏什么安全性,却没有提到。我想评估如果我使用我的补丁,这个数据完整性问题是否也适用于 Node.js 应用程序。
我相信你会经历过工作草案 http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method并发现
上面的头是由用户代理来控制的
交通的那些方面。
首先我们需要了解,这些标准是不同浏览器之间功能互操作性的指南。它不是浏览器的强制要求,因此浏览器出于不同的原因确实有不同程度的遵守该标准。
其次,从技术上讲,您可以模拟用户代理,将您的程序视为浏览器,并且可以根据上述标准很好地设置这些值。
最后,禁止覆盖标头或为某些字段设置标头的意图,例如Content-Length
, Cookie
精神secure design approach
。这是劝阻或至少试图劝阻HTTP 请求走私 https://www.rfc-editor.org/rfc/rfc7230#section-9.5.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)