【发布时间】:2020-12-24 19:50:29
【问题描述】:
即使服务器响应包含正确的 Set-Cookie 标头,我的 Laravel 会话 cookie 也没有在浏览器中设置。 Laravel 服务器运行在 localhost:8000,客户端应用程序是 NuxtJS SPA,运行在 localhost:7000。
包含Set-Cookie的响应头如下:
HTTP/1.1 200 OK
Host: localhost:8000
Date: Sun, 06 Sep 2020 00:50:31 GMT
Connection: close
X-Powered-By: PHP/7.4.10
Cache-Control: no-cache, private
Date: Sun, 06 Sep 2020 00:50:31 GMT
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Headers: Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization, Access-Control-Request-Headers, Set-Cookie
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Set-Cookie: dv_session=ifhSq8WFD2Upltr5v2bzNBgaA5xx3KiDVuMWuBge; expires=Sun, 06-Sep-2020 02:50:31 GMT; Max-Age=7200; path=/
通过邮递员发出同样的请求,cookie被保存:
所以,浏览器似乎忽略了“Set-Cookie”标头。
我的session.php文件如下:
<?php
return [
'driver' => env('SESSION_DRIVER', 'redis'),
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => env('SESSION_CONNECTION', null),
'table' => 'sessions',
'store' => env('SESSION_STORE', null),
'lottery' => [2, 100],
'cookie' => 'dv_session',
'path' => '/',
'domain' => "",
'secure' => false,
'http_only' => false,
];
为什么 cookie 保存在 Postman 中,却被浏览器忽略?
【问题讨论】:
-
当你说它没有设置你已经检查了你的 cookie 存储并且它根本不在那里?
-
正确。我可以在 API 调用的响应标头中看到“set-cookie”的值正确,但检查 cookie 存储时,它不存在。我试过使用 Chrome 和 Firefox。
-
此外,Chrome 并没有说 cookie 因任何原因被阻止 - 只是默默地失败
-
单击地址栏左侧的图标(显示“不安全”或带有挂锁图标的图标),然后从那里单击 cookie。确保您的 cookie 不在“阻止”部分。您也可以检查您的浏览器设置以确保您启用“第三方 cookie”
标签: php laravel cookies laravel-7