[英]Why the session destroyed every page load in mobile browsers?
我的問題是我有一個網站,當我刷新頁面時,會話被破壞了。 這意味着我丟失了我的購物車、我的心願單等......它也發生在 Safari 和 Firefox 中,但在我的 PC 上,會話保持在那里。 這不是隱身選項卡/窗口,我不會在刷新之間刪除我的 cookie 和/或會話數據,也沒有在瀏覽器設置中指定在任何情況下刪除 cookie(或其他數據)。
我在帶有 FPM 的 nginx 下使用帶有 PHP 7.4 的 Yii2(最新通過作曲家安裝)。 php.ini 配置(會話):
session.save_handler = files
;session.save_path = "/var/lib/php/sessions"
session.use_strict_mode = 0
session.use_cookies = 1
session.cookie_secure = 0
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 5184000
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 0
session.cookie_samesite = "Strict"
session.serialize_handler = php
session.gc_probability = 1/100
session.gc_divisor = 1000
session.gc_maxlifetime = 5184000
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 5184000
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
;session.trans_sid_hosts=""
session.sid_bits_per_character = 5
;session.upload_progress.enabled = On
;session.upload_progress.cleanup = On
;session.upload_progress.prefix = "upload_progress_"
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
;session.upload_progress.freq = "1%"
;session.upload_progress.min_freq = "1"
;session.lazy_write = On
我的 Yii2 配置(前端/配置/main.php):
return [
// ...
'modules' => [
// ...
'session' => [
'class' => 'yii\web\Session',
'timeout' => 5184000,
],
//..
],
// ..
'components' => [
// ..
'session' => [
'name' => 'advanced-frontend',
],
// ..
],
//..
];
我在前端的 TestController 用於我的測試:
<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
class TestController extends Controller
{
/**
* Test index action
*/
public function actionIndex()
{
if(!\Yii::$app->session->has('asd')) {
echo 'do not has ASD';
\Yii::$app->session->set('asd', 1);
} else {
echo 'has ASD';
}
echo '<br />' . \Yii::$app->session->id;
dd($_COOKIE, \Yii::$app->request->cookies);
}
}
我在 php.ini 和 Yii2 主配置中嘗試了各種配置,但沒有成功。 任何想法apprisiated!
在詢問了幾個人和一些調試之后,問題是session.cookie_samesite = "Strict"
當我將其更改為session.cookie_samesite = "None"
,問題就像魔術一樣解決了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.