首页 > 解决方案 > 将 localhost 连接到远程开发服务器(CORS、同站点、安全和其他令人头疼的问题)

问题描述

我目前正在做一个 React 项目。该项目的开发服务器(Bottle/Python)是远程托管的,我的 React 开发服务器是 localhost。应用程序的部分身份验证过程涉及在登录时设置 cookie,但由于未设置 cookie 的相同站点和安全规则,这意味着我的开发前端无法访问它需要的任何数据。

我自己和服务器工程师已经将 SameSite=None 添加到 cookie 中并且是安全的,但是因为我的 localhost 不是 https cookie 仍然没有被正确存储(我收到错误消息“this Set-Cookie” was blocked 因为它有“安全”属性,但未通过安全连接接收“)。

部署应用程序时没有问题,因为所有内容都在同一个域中,但现在我们陷入困境 - 我们已经尝试解决问题几个小时,但似乎无法解决。

我的问题是 - 如果您需要访问非本地开发服务器,但实际上不能在本地计算机上运行您自己的服务器版本,那么最佳开发实践是什么?

我是否:

  1. 需要以某种方式使我的本地主机 https 吗?
  2. 需要将开发服务器域设置为 https 吗?
  3. 需要在本地安装服务器,因为没有办法做到这一点?

抱歉,如果这是一个菜鸟问题,那么有一些建议会很棒。非常感谢。

标签: cookieshttpscross-domainbottlesamesite

解决方案


简短的回答是:

  1. 是的

您可以在 http://localhost:port 上运行您的应用程序。假设来自您的开发服务器的响应中包含具有 Secure 标志的 cookie 的响应标头 Set-Cookie,您的开发服务器 URL 必须是 https 才能让浏览器接受 cookie。

我有这个设置,它工作得很好。

关于 CORS(如问题标题中所述):您必须将服务器配置为接受凭据并配置允许的来源。执行 XHR 请求时的客户端应用程序必须具有 withCredentials:true。查看我帖子中的第 2 点和第 3 点了解详细信息。

另请注意,如果您使用的是 Chrome,您可以通过禁用“没有 SameSite 的 Cookie 必须是安全的”标志来绕过具有 SameSite=None 和安全的要求,此处也有详细说明


推荐阅读