我有一个简单的 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。如果我从主机中删除“__”,那么一切都会正常工作。
我在这里做错了什么?
您的错误消息弹出窗口包含诊断其他问题所需的一些信息,但一个问题是您通过 HTTP 提供响应,在使用这种特定类型的 cookie 时,浏览器不会将其视为安全传输。对于需要安全传输的许多功能,大多数浏览器已实现将
http
方案在 localhost
上使用时视为“安全”,但不是此功能。
这种形式的 cookie 有一些规则:
因此,您希望 Set-Cookie 看起来像
Set-Cookie __Host-key=value; Secure; Path=/
并且需要通过 HTTPS 提供服务。