cookies - 将 localhost 连接到远程开发服务器(CORS、同站点、安全和其他令人头疼的问题)
问题描述
我目前正在做一个 React 项目。该项目的开发服务器(Bottle/Python)是远程托管的,我的 React 开发服务器是 localhost。应用程序的部分身份验证过程涉及在登录时设置 cookie,但由于未设置 cookie 的相同站点和安全规则,这意味着我的开发前端无法访问它需要的任何数据。
我自己和服务器工程师已经将 SameSite=None 添加到 cookie 中并且是安全的,但是因为我的 localhost 不是 https cookie 仍然没有被正确存储(我收到错误消息“this Set-Cookie” was blocked 因为它有“安全”属性,但未通过安全连接接收“)。
部署应用程序时没有问题,因为所有内容都在同一个域中,但现在我们陷入困境 - 我们已经尝试解决问题几个小时,但似乎无法解决。
我的问题是 - 如果您需要访问非本地开发服务器,但实际上不能在本地计算机上运行您自己的服务器版本,那么最佳开发实践是什么?
我是否:
- 需要以某种方式使我的本地主机 https 吗?
- 需要将开发服务器域设置为 https 吗?
- 需要在本地安装服务器,因为没有办法做到这一点?
抱歉,如果这是一个菜鸟问题,那么有一些建议会很棒。非常感谢。
解决方案
简短的回答是:
- 不
- 是的
- 不
您可以在 http://localhost:port 上运行您的应用程序。假设来自您的开发服务器的响应中包含具有 Secure 标志的 cookie 的响应标头 Set-Cookie,您的开发服务器 URL 必须是 https 才能让浏览器接受 cookie。
我有这个设置,它工作得很好。
关于 CORS(如问题标题中所述):您必须将服务器配置为接受凭据并配置允许的来源。执行 XHR 请求时的客户端应用程序必须具有 withCredentials:true。查看我帖子中的第 2 点和第 3 点了解详细信息。
另请注意,如果您使用的是 Chrome,您可以通过禁用“没有 SameSite 的 Cookie 必须是安全的”标志来绕过具有 SameSite=None 和安全的要求,此处也有详细说明
推荐阅读
- python - Is it possible to interact with GUI-based desktop applications using Python, and how?
- c++ - 动态选择要写入的输出文件
- sed - Replacing the test with sed
- javascript - Create unknown in advance Vue instances count
- angular - 如何在 Angular routerlink 元素中启用标记或选择文本而不启动导航?
- sql - 我们可以在存储过程中使用 LIKE 运算符和 MEMBER OF 运算符吗?
- python-3.x - PyCharm 没有 Splunk SDK (splunklib)
- python - Inserting records for existing key in PyMongo
- linear-programming - Having negative value for non basic variable gives a non feasible solution in simplex method?
- tomcat - Servlet - 如何避免读取请求正文