首页 >后端开发 >Golang >为什么我的 HTTPOnly Cookie 没有在本地主机上设置?

为什么我的 HTTPOnly Cookie 没有在本地主机上设置?

Susan Sarandon
Susan Sarandon原创
2024-11-25 05:02:11906浏览

Why Aren't My HTTPOnly Cookies Being Set on Localhost?

浏览器本地主机中未设置 HTTPOnly Cookie

问题:

REST API 的登录端点发送包含有效负载 (JWT) 的 HTTPOnly cookie,但该 cookie 并未被在浏览器中设置。这种方法多年来一直有效,但最近停止了。该问题与本地主机环境无关。 Postman 测试确认 cookie 按预期设置。

使用的方法:

  • 在 Go Fiber 和 Node Express 中实现登录端点的核心要素。
  • 将前端剥离为基本登录

调查:

Go 和 Node API 都正确发送设置了 HTTPOnly 标志的 Set-Cookie 标头。这表明问题可能出在浏览器或 fetch() 方法上。

解决方案:

通过添加凭据:“include”属性解决了问题到前端 JavaScript 中的 fetch() 方法。此属性指示浏览器发送和接收 cookie。

原因:

HTTPOnly cookie 旨在防止客户端 JavaScript 访问 cookie 的内容。默认情况下,浏览器通过不在 XHR 或 fetch() 请求中发送 cookie 来支持这一点。通过添加凭证:“include”属性,浏览器被明确告知将 cookie 与请求一起发送,从而允许服务器接收它并进行适当的设置。

附加说明:

  • 如果使用 Axios 进行 HTTP 请求,它会自动在其配置中包含凭据。
  • 对于 Node Express,您可能还需要在请求配置中设置 withCredentials: true 以允许浏览器设置 cookie。

以上是为什么我的 HTTPOnly Cookie 没有在本地主机上设置?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn