我对如何在服务器之间发送cookie数据有点天真。我知道在HTTP请求中你使用Set-Cookie。
现在,我正在服务器之间发送标头,以便进行授权,以便一台服务器获得另一台服务器的授权。但我想知道使用cookie是否有一些优势,如果在这种情况下cookie的行为与标题不同。根据我的阅读,大多数用途的cookie和标题都是一样的吗?
使用两个Node.js服务器,一个是Web服务器,另一个是API服务器,有没有理由为什么发送cookie与常规非cookie头更好?
答案 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再次说话时所说的话。您通常将服务器与服务器之间的通信视为无状态,这意味着您可以在每次事务后丢弃与授权和权限相关的数据。每笔交易都必须经过完整的授权和许可解决流程。它更容易编码,只要您通过加密保护,就没有安全方面的惩罚