在服务器之间发送 cookie 与发送 headers
Sending cookies between servers vs sending headers
我对如何在服务器之间发送 cookie 数据有点天真。我知道在 HTTP 请求中您使用 Set-Cookie.
现在,我正在服务器之间发送一个 header,用于授权目的,以便一个服务器获得另一台服务器的授权。但我想知道使用 cookie 是否有一些优势,如果 cookie 在这种情况下与 headers 的行为不同。据我所知,cookie 和 headers 在大多数情况下是一样的?
使用两个 Node.js 服务器,一个是 Web 服务器,另一个是 API 服务器,发送 cookie 与常规 non-cookie header 更好吗?
是的,"cookies" 只是 Cookie:
HTTP header 和对应的 Set-Cookie:
header 的行话。所以它们最终是相同的基本事物。许多 API 使用稍微更语义化的 Authorization:
header,因此这是一个很好的起点。
"cookie"表示客户端和服务器之间的共享状态。如前所述,设置 cookie 值的方法是使用 Set-Cookie
header。传达已设置值的方法是使用 Cookie
header.
Cookie 通常与网络浏览器相关联,作为跟踪和识别现有用户的工具。我从未见过用于服务器到服务器通信的 cookie。
Authorization
header 适用于传递编码或加密的字符串。
例如,您可能会看到:
Authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
本例中的值为"username:password"
的base64编码字符串
我不会太担心你用什么header。您可以编写自己的 x-my-awesome-auth-header:
它的惯例是在自定义 header 前加上 "x"。
需要考虑的重要事项是 header 值包含的内容。如果您通过纯 http
进行通信,请确保进行加密。
还可以考虑使用开源标准来传递加密数据,例如 JWT
编辑:为了回答您的问题,发送 cookie 是否更好?当谈到服务器到服务器的通信时,使用 Cookies 实际上要糟糕得多,因为那些服务器必须与其他服务器保持状态。例如。当 A 与 B 交谈时,A 必须记住他们再次交谈时 B 所说的话。通常,服务器到服务器的通信是无状态的,这意味着您可以在每次交易后丢弃与授权和许可有关的数据。每笔交易都必须经过完整的授权和许可解决过程。它更容易编写代码,只要您通过加密
受到保护,就不会在安全方面受到惩罚
我对如何在服务器之间发送 cookie 数据有点天真。我知道在 HTTP 请求中您使用 Set-Cookie.
现在,我正在服务器之间发送一个 header,用于授权目的,以便一个服务器获得另一台服务器的授权。但我想知道使用 cookie 是否有一些优势,如果 cookie 在这种情况下与 headers 的行为不同。据我所知,cookie 和 headers 在大多数情况下是一样的?
使用两个 Node.js 服务器,一个是 Web 服务器,另一个是 API 服务器,发送 cookie 与常规 non-cookie header 更好吗?
是的,"cookies" 只是 Cookie:
HTTP header 和对应的 Set-Cookie:
header 的行话。所以它们最终是相同的基本事物。许多 API 使用稍微更语义化的 Authorization:
header,因此这是一个很好的起点。
"cookie"表示客户端和服务器之间的共享状态。如前所述,设置 cookie 值的方法是使用 Set-Cookie
header。传达已设置值的方法是使用 Cookie
header.
Cookie 通常与网络浏览器相关联,作为跟踪和识别现有用户的工具。我从未见过用于服务器到服务器通信的 cookie。
Authorization
header 适用于传递编码或加密的字符串。
例如,您可能会看到:
Authorization: "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
本例中的值为"username:password"
的base64编码字符串我不会太担心你用什么header。您可以编写自己的 x-my-awesome-auth-header:
它的惯例是在自定义 header 前加上 "x"。
需要考虑的重要事项是 header 值包含的内容。如果您通过纯 http
进行通信,请确保进行加密。
还可以考虑使用开源标准来传递加密数据,例如 JWT
编辑:为了回答您的问题,发送 cookie 是否更好?当谈到服务器到服务器的通信时,使用 Cookies 实际上要糟糕得多,因为那些服务器必须与其他服务器保持状态。例如。当 A 与 B 交谈时,A 必须记住他们再次交谈时 B 所说的话。通常,服务器到服务器的通信是无状态的,这意味着您可以在每次交易后丢弃与授权和许可有关的数据。每笔交易都必须经过完整的授权和许可解决过程。它更容易编写代码,只要您通过加密
受到保护,就不会在安全方面受到惩罚