当前位置: 首页 > 面试题库 >

为什么使用setRequestHeader进行xmlhttprequest时不能设置cookie和set-cookie头?

方寒
2023-03-14
问题内容

我想知道为什么不能使用setRequestHeader 设置 cookie
标头。是否有任何特定原因,或者只是它们是由浏览器本身添加的,所以这些标头被禁用了?有安全性问题吗?

- 编辑

我正在使用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应用程序有效,如果我随补丁一起安装的话。


问题答案:

我相信您会通过工作草案并找到

上述标头由用户代理控制,以使其控制传输的那些方面。

首先,我们需要了解,这些标准是不同浏览器之间功能互操作性的准则。浏览器没有强制使用它,因此,出于不同的原因,浏览器确实对此标准具有不同的遵守级别。

其次,从技术上讲,您可以模拟用户代理,将您的程序视为浏览器,并可以按照提到的标准很好地设置这些值。

最后,意图禁止头的覆盖或像某些领域设立头Content-LengthCookie风气的secure design approach。这是为了阻止或至少试图阻止
HTTP请求走私。



 类似资料:
  • 这里,我需要将cookie-header设置为不显式地添加cookie-header(像浏览器那样)。尝试这样做时,会给出错误“”。 虽然我已经找到了一个补丁,并成功地发送了cookie-header。但想知道为什么设置cookie-header被禁用了?我曾经读过,发现它是数据完整性和安全性所必需的,但在这种情况下,什么安全性可以被破坏,没有提到哪里。我想评估一下,如果我使用补丁,这个数据完整性

  • 所述Set-CookieHTTP 响应报头被用于从服务器向用户代理发送 cookie。 有关更多信息,请参阅 HTTP cookie 指南。 Header type Response header Forbidden header name no 句法 Set-Cookie: <cookie-name>=<cookie-value> Set-Cookie: <cookie-name>=<cooki

  • 问题内容: 我正在尝试使用XMLHttpRequest在XSS请求中设置Cookie。 我找到了XMLHttpRequest规范,并且4.6.2-5节似乎确实建议不允许设置Cookie,Cookie2和其他一些标头,但我希望可以解决这一问题。 我的(jQuery)代码如下,但是由于未设置cookie,导致查询失败。 问题答案: 可以做到的。$ .ajax调用中需要以下内容: (请参阅jQuery文

  • 问题内容: 我试图根据我在HTML中选择的CSS文件来设置Cookie。我有一个带有选项列表的表单,以及不同的CSS文件作为值。当我选择一个文件时,应将其保存到Cookie大约一周。下次打开HTML文件时,它应该是您选择的上一个文件。 JavaScript代码: HTML代码: 问题答案: 我发现以下代码比其他任何代码都简单得多: 现在,调用函数

  • 问题内容: 我一直在使用expressjs和mongostore进行会话管理。以下是在expressjs中配置存储的代码, 我在上面的代码中提到了cookie路径。但是它将cookie设置在sub.domain.com而不是.domain.com中。我该如何实现? 问题答案: 像这样配置它:

  • 本文向大家介绍JS设置cookie、读取cookie,包括了JS设置cookie、读取cookie的使用技巧和注意事项,需要的朋友参考一下 JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。 而cookie是运行在客户端的,所以可以用JS来设置cookie。 js设置cookie方法汇总: 第一种: 第二种: 第三个例子 注意: