在开发过程中禁用浏览器上的 cookie 安全

问题描述

我目前正在使用 API 服务器开发基于 React 的 JS 应用程序。两者都在我的控制之下。

我没有使用 Authorization 标头,而是使用基于 cookie 的身份验证。当应用程序向 /login 发出成功的 API 请求时,API 服务器会返回一个带有 JWT 的 cookie。从那时起,此 cookie 将自动发送给后续 API 请求,以验证用户身份。

总体而言,此设置在生产环境中运行良好,我选择它而不是使用本地存储的 JWT 作为授权标头发送,因为它可以防止 XSS 攻击。

问题是,安全性有时太好 :-) 它阻止我在本地机器上开发 React 应用程序。如果 react 应用程序在本地主机上运行,​​Chrome 似乎会禁用发送任何 cookie。不管使用什么域名(我用的是localtest.me,甚至自己创建的域名),如果解析为127.0.0.1,chrome会认为这是一个安全风险,并且不发送cookies,即使是授权域.

在生产中,这不是问题,因为应用程序在生产服务器(不是本地主机)上运行,因此 Chrome 会按预期将 cookie 发送到 API 服务器。但是在开发过程中,当应用在我的机器上本地运行时,Chrome 拒绝发送 cookie。

所以总结一下,只要我的设置是这样的:

1) API Server: api.company.com
2) Website: www.company.com
3) browser: local browser accessing www.company.com

然后 Chrome 将 cookie 发送到 api.company.com 没有问题

但如果我的设置是这样的:

1) API Server: api.company.com
2) Website: localhost:3000 (development)
3) browser: local browser accessing localhost:3000

然后 Chrome 拒绝发送 cookie。

这让开发变得很痛苦,因为我不得不将代码同步到远程开发工作站,然后从那里运行网站。

我的问题是:

  1. 我是不是遗漏了什么?是否有其他原因导致 Cookie 无法正确发送?
  2. 是否有可以在开发过程中使用的 Chrome 设置或插件或其他禁用此 cookie 安全性的设置? FWIW,我可以很好地使用邮递员,它从我的本地机器发送 cookie,但这仅测试原始 API 结果,我仍然需要测试完整的网站。
  3. 如果没有可用的扩展程序,是否有其他专为开发设计的浏览器没有这些安全设置(有点像邮递员所做的那样)
  4. 除此之外,还有其他设置可以用来避免这些问题吗?有时远程开发工作正常,但当互联网连接不稳定时,就很难远程工作。

为了支持本地开发,我不愿意创建一个具有不同身份验证方案的单独 API 服务器,因为这意味着我必须测试 2 个不同的代码库(在 API 和客户端)并保持它们同步。我看到的唯一其他解决方案是在本地运行 API 服务器的副本(并使用 VPN 允许它访问我们的数据库),因为 Chrome 似乎允许从本地主机网站发送 cookie,只要它是到另一个本地主机网站。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)