在服务器与发送标头之间发送cookie

时间:2016-01-25 00:56:54

标签: node.js http express cookies http-headers

我对如何在服务器之间发送cookie数据有点天真。我知道在HTTP请求中你使用Set-Cookie。

现在,我正在服务器之间发送标头,以便进行授权,以便一台服务器获得另一台服务器的授权。但我想知道使用cookie是否有一些优势,如果在这种情况下cookie的行为与标题不同。根据我的阅读,大多数用途的cookie和标题都是一样的吗?

使用两个Node.js服务器,一个是Web服务器,另一个是API服务器,有没有理由为什么发送cookie与常规非cookie头更好?

2 个答案:

答案 0 :(得分:2)

是的," cookies"只是Cookie: HTTP标头和相应的Set-Cookie:标头的行话。所以它们最终是基本相同的东西。许多API使用稍微更具语义Authorization:的标头,因此这将是一个很好的起点。

答案 1 :(得分:2)

“cookie”表示客户端和服务器之间的共享状态。如前所述,设置cookie值的方法是使用Set-Cookie标头。传达已经设置的值的方法是使用Cookie标题。

Cookie通常与网络浏览器相关联,作为跟踪和识别现有用户的工具。我从未见过用于服务器到服务器通信的cookie。

Authorization标头适用于传递编码或加密字符串。

例如,您可能会看到:

Authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="

这种情况下的值是base64编码的字符串“username:password”

我不会太担心你使用什么标题。您可以自己组建x-my-awesome-auth-header:它的常规标头,为自定义标头添加“x”。

要考虑的重要事项是标头值包含的内容。如果您通过普通http进行通信,请确保加密。

还考虑使用开源标准传递加密数据,例如JWT

编辑:要回答您的问题,有没有理由为什么发送cookie更好?当涉及到服务器到服务器的通信时,使用Cookies实际上要糟糕得多,因为这些服务器必须与其他服务器保持状态。例如。当A与B交谈时,A必须记住B再次说话时所说的话。您通常将服务器与服务器之间的通信视为无状态,这意味着您可以在每次事务后丢弃与授权和权限相关的数据。每笔交易都必须经过完整的授权和许可解决流程。它更容易编码,只要您通过加密保护,就没有安全方面的惩罚