我們有一個運行在PHP 5.5上的應用程序& Laravel 5.2。它有一個用戶帳戶區域,其中所有路由都以/ account /爲前綴。帳戶區域的默認路由是/ account/services。登錄後,用戶默認路由到此頁面。在Word或Excel(PHP,Laravel)中點擊URL時路由無法正常工作
當然,如果用戶輸入特定的帳戶區域URL(例如example.com/account/billing),它們將在登錄時進入結算頁面(或直接進行驗證)。但是,如果我在Excel或Word中點擊https://example.com/billing,我將轉到默認的/ account/services頁面(如果通過身份驗證;否則我會在登錄後進入該頁面)。
起初我相信這是因爲他們插入隱藏的字符並因此使URL無效,導致我們的應用程序將用戶路由到默認URL。
所以,我想這些解決方案:
trim()
的URL- 刪除不間斷空格:
$url = preg_replace('~\x{00a0}~','',$reqURL);
- 函數刪除字節順序標記(來源here)
我甚至將測試網址從瀏覽器複製到NPP中,並以十六進制形式查看。似乎沒有任何額外的字符。
如果我手動在瀏覽器欄中輸入相同的URL,則一切正常。
這隻發生在需要驗證的網址上,公共/前端網址似乎不受影響。這導致我this answer,但我不知道它適用於我們的情況。 Microsoft確實在瀏覽器中打開這些URL之前運行Microsoft Office協議發現,但我們的身份驗證Cookie正在被識別(瀏覽器打開登錄頁面,但如果用戶具有有效的cookie,則立即重定向到帳戶區域)。
有沒有其他人經歷過這個?我還能看到其他什麼原因?