我不知道是否有人能提出在這裏回答:PHP:從鏈接加入瀏覽器會話中的MS Office
我們這是使用PHP會話(和其他措施,如SSL保護的系統,任何人都開始前談論我的安全!),並且我們希望在與客戶聯繫有關特定問題時通過電子郵件向系統發送直接鏈接。我們發送的鏈接包括GET參數。
我們的建議是讓客戶確保他們已登錄,然後點擊鏈接 - 鏈接在瀏覽器中啓動,啓動會話,並將用戶直接轉到所需的頁面。但是,當用戶從Microsoft Office應用程序單擊鏈接時,這不起作用。
當從Outlook(甚至Excel)中點擊鏈接時,會話變量沒有被拾取,並且要求用戶重新進行身份驗證。進一步挖掘,看起來好像請求是通過將用戶代理設置爲Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0E; .NET4.0C; ms-office)
來實現的,但該站點正在Chrome(也是設置會話的瀏覽器)中啓動。我想知道是否有一些會話安全代碼在踢,說如果瀏覽器不同,會話必須被欺騙?
試圖解決這個問題,我試圖初始頁面加載設置重定向頁面:
if (isset($_GET['targetpage'])) {
// It's a GET request - redirect using header-location
$all_get = $_GET;
unset($all_get['targetpage']);
$redir = $_GET['targetpage'].'?'.http_build_query($all_get);
header('User-Agent:');
header("Location: {$redir}");
die();
}
這失敗:請求仍來自通過與用戶代理設置,以及會話缺席。
有什麼想法/建議嗎?
那麼在重定向之後你看到了什麼用戶代理?它是空的,它是否仍然包含MS-OFFICE,或者它是否再次變得正常? – 2013-04-10 10:36:31
@ nl-x,用戶代理以ms-office的形式出現,但是當未找到會話並且該網站重定向到登錄頁面時,該請求將使用Chrome的用戶代理字符串進行。 – almcnicoll 2013-04-12 09:45:34