有一段时间我不得不结束:
https://client.a.com
=> 一个 JavaScript 客户端 (nuxt)https:/api.a.com
=> PHP api(瘦框架)为了使这些一起工作,我需要一个共享的 Php 会话。为此,我设置了这样的一切:
axios
)配置为 withCredentials = true
Access-Control-Allow-Origin: https://client.a.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Origin, Authorization
Access-Control-Allow-Methods: POST, GET, OPTIONS
效果很好。
现在,我想将客户端从
https://client.a.com
移至 https://b.com
所以我没有更改客户端中的任何内容,但我将 api 标头响应更改为
Access-Control-Allow-Origin: https://b.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Origin, Authorization
Access-Control-Allow-Methods: POST, GET, OPTIONS
而且根本不起作用。 每次我从客户端向 api 发送新请求时,这都是一个新的 PHP 会话。
如果有的话,你知道有什么窍门吗? 干杯<3
会话 cookie 可以通过正确的配置在子域之间共享 - 大概这就是到目前为止所发生的情况。但您无法在完全不同的根域之间共享会话。
如果您想将前端移动到新域,例如
b.com
,在不重新设计软件的情况下,一个简单的解决方案是将后端移动到b.com
的子域,例如api.b.com
。
附注长期来看:理想情况下,如果您正在设计一个具有完全独立的客户端前端和 API 后端的应用程序,那么它应该以更加无状态的方式构建,这样它就不需要首先使用会话。