當主站為 HTTP、支付/用戶中心為 HTTPS(不同域名/子域名/協議)時,Cookie 默認不跨協議傳輸,導致 Session 失效。本文提供通過 URL 參數透傳 Session ID 的簡易方案,並分析安全風險與加固建議。
手動獲取當前 session_id(),在跳轉鏈接中攜帶作為參數,目標站通過 session_id($id) 設置後再 session_start(),實現同一 Session 數據共享。
<?php
session_start();
$currentSessionID = session_id();
$_SESSION['testvariable'] = 'Session worked';
$secureServerDomain = 'www.sjolzy.cn';
$securePagePath = '/safePages/securePage.php';
echo '點擊跳轉到 HTTPS';
<?php
$currentSessionID = $_GET['session'];
session_id($currentSessionID);
session_start();
if (!empty($_SESSION['testvariable'])) {
echo $_SESSION['testvariable'];
} else {
echo 'Session did not work.';
}
a.example.com / b.example.com),設置 session.cookie_domain = .example.com、session.cookie_secure = 1、session.cookie_samesite = Lax,優先嘗試 Cookie 原生共享。作者曾因 HTTP/HTTPS 跨域導致 Magento Cookie 失效多日,最終定位為協議差異導致 Cookie 不發送。上述方案可作為緊急修復,長期請遷移至集中式存儲或統一協議/域名。
跨域共享 Session 本質是**身份傳遞**,選擇方案時需在便利性、安全性、架構演進之間權衡。