【问题标题】:Issues setting session cookies in other subdomain在其他子域中设置会话 cookie 的问题
【发布时间】:2021-12-18 21:16:54
【问题描述】:

我在 HTTP set-cookie 主题上纠结了一段时间,但没有取得任何进展。我的情况如下:

我的 API 托管在 api.mysite.com 上,并且我在 admin.mysite.com 上有一个管理仪表板。我从 admin.mysite.com 向 api.mysite.com/login 发出 POST 请求以验证凭据并返回会话 cookie。 cookie配置为:


session_set_cookie_params([
    'lifetime' => 36000,
    'path' => '/',
    'domain' => '.mysite.com.co',
    'secure' => 1,
    'httponly' => 0,
    'samesite' => 'None'
]);

响应似乎还可以:

HTTP/1.1 200 OK
Date: Thu, 04 Nov 2021 16:22:57 GMT
Server: Apache/2.4.41 (Ubuntu)
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: https://admin.mysite.com
Access-Control-Allow-Headers: x-requested-with, Content-Type, origin, accept, authorization, client-security-token, Cache-Control, X-Mashape-Authorization
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Expose-Headers: Content-Security-Policy, Location
Access-Control-Max-Age: 1000
Upgrade: h2
Connection: Upgrade, Keep-Alive
Set-Cookie: PHPSESSID=hash; expires=Fri, 05-Nov-2021 02:22:57 GMT; Max-Age=36000; path=/; domain=.mysite.com; secure; SameSite=None
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Access-Control-Allow-Credentials: true
Content-Length: 549
Keep-Alive: timeout=5, max=100
Content-Type: text/html; charset=UTF-8

但是 cookie 没有被存储。但是,如果我从 api.mysite.com/testCookies 向 api.mysite.com/login 发出请求,它就会被存储,所以这似乎是一个域/站点问题(可能是 CORS?)

我将不胜感激有关此主题的任何指导。

【问题讨论】:

标签: php xmlhttprequest http-headers session-cookies


【解决方案1】:

here 的答案相同。关键点是withCredentials 属性的使用。不过不确定,为什么即使 cookie 来自子域 A 并设置在子域 B 上,我也必须发送它们。

【讨论】:

    猜你喜欢
    • 2016-09-24
    • 2013-11-19
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多