为什么expressjs会在每个OPTIONS响应中发送Set-Cookie标头?

时间:2014-05-06 06:41:21

标签: javascript node.js cookies express passport.js

我发现我的快速服务器发送Set-Cookie标头以响应我的前端Angular.js项目发出的每个OPTIONS请求。

Cookie在每个OPTIONS请求中都有一个新值,但实际上从未存储过 铬。

当我使用passport.js对用户进行身份验证时,对POST请求的响应具有相同的标头(再次使用新的cookie),但这次我可以看到它已存储,并随之发送Cookie标题中的后续请求。

哪个快递模块正在这样做,为什么?为什么Chrome不存储Cookie?

这比任何事情都更好奇,因为它没有造成任何问题(只是在试图追踪一个问题时引起了很多混乱)。

2 个答案:

答案 0 :(得分:2)

OPTIONS方法不应该有副作用。请参阅此HTTP 1.1 documentation

OPTIONS是对服务器的信息请求。这种请求不被视为用户和服务器之间的真实交互。服务器可能会向所有用户提供信息。

浏览器尊重这一点并选择忽略cookie,符合规范。这表示将cookie数据公开传递给用户存在安全风险。即使它无效,它也可以揭示服务器端内部,这可以让黑客利用它。

答案 1 :(得分:1)

非常确定这是当前会话模块的错误。如果您正在使用新的Cookie会话,那么您就不会遇到此问题。随意提交错误:https://github.com/expressjs/session