close

今天注意到一個奇怪的問題,在 Chrome 裡開啟某個頁面,該頁面內會出現一塊 iframe 無法載入,IIS 會直接回應「HTTP 401 - 未經授權,因為認證無效而拒絕存取」(Unauthorized: Access is denied due to invalid credentials)

在Chrome裡,跨主機的IIS頁面在iframe裡會出現HTTP 401未經授權的錯誤

以前解決過另一個 HTTP status code 401 的問題,是因為權限不足。但是上次的狀況是怎麼樣都開不了頁面,這次這個頁面只要從單一分頁開啟、不要從 iframe 載入,就能成功開啟。

 

 

因為頁面吃不到外框的 AD 驗證,所以這次的方向就朝 AD 驗證、Chrome 與 iframe 來查。很快地找到這篇:"Chrome 87 is failing Windows Authentication in CORS against Windows IIS 10"

裡頭說到,在 Chrome 87 與 Edge 87 這兩個瀏覽器版本裡,都會因為 Kerberos 與 NTLM 驗證要用到第三方 cookies (third-party cookies) 而出現問題,要記得把站台設定到「一律可以使用 Cookie 的網站」(Sites that can always use cookies) 裡頭。

我們在 iframe 裡內嵌的目的頁面是架在 IIS 7.5 上頭,一樣有這個問題。因為停用第三方 cookies 是在 GCB 裡頭的項目,而 iframe 內嵌的目標網站是個 IE only 的網站(不要問我為什麼),最後討論的結果就是⋯⋯請 user 不要用 IE 以外的瀏覽器去開我們那個框架頁。😅

--

補充一下:

  1. 這個問題在 IE 和 Firefox 不會發生。
  2. IE 和 Edge 不是同一個瀏覽器,要排除問題時,要弄清楚 user 實際上使用的瀏覽器。
  3. Firefox 即使設定封鎖所有的 Cookies,也一樣可以正常讓 iframe 裡的跨網域頁面取得 AD 驗證。(頁面上有幾個 iframe,就會問幾次 AD 帳密)

 

arrow
arrow
    創作者介紹
    創作者 小攻城師 的頭像
    小攻城師

    小攻城師的戰場筆記

    小攻城師 發表在 痞客邦 留言(0) 人氣()