通过 Set-Cookie 设置 cookie 的尝试被阻止,因为它使用了“__secure”或 __HOST

问题描述 投票:0回答:1

我有一个简单的 Go 应用程序,它设置了 cookie。我喜欢它是安全的 cookie 并阅读文档我将 cookie 设置为“__Host”。

在客户端看起来像这样:

__Host-refresh_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTkwMDQ1MTAsImlhdCI6MTY5OTAwMzA3MCwic3ViIjoiMSJ9.8VDKxv2skkIK5cjiFgEWutaVJcepzgYadWSFjUqEPqc; Path=/; Domain=localhost; Expires=Fri, 03 Nov 2023 09:41:50 GMT; Max-Age=1440; HttpOnly; Secure; SameSite=Strict

但现在我在浏览器中收到这样的警告:

而且我看不到浏览器中创建的 cookie。如果我从主机中删除“__”,那么一切都会正常工作。

我在这里做错了什么?

security cookies browser
1个回答
0
投票

您的错误消息弹出窗口包含诊断其他问题所需的一些信息,但一个问题是您通过 HTTP 提供响应,在使用这种特定类型的 cookie 时,浏览器不会将其视为安全传输。对于需要安全传输的许多功能,大多数浏览器已实现将

http
方案在
localhost
上使用时视为“安全”,但不是此功能。

这种形式的 cookie 有一些规则:

  • 它必须包含安全属性。
  • 必须从浏览器认为安全的 URI(即 HTTPS 或其他安全传输)进行设置。
  • 不能包含 Domain 属性。
  • 它必须包含 / 的 Path 属性

因此,您希望 Set-Cookie 看起来像

Set-Cookie __Host-key=value; Secure; Path=/
并且需要通过 HTTPS 提供服务。

© www.soinside.com 2019 - 2024. All rights reserved.