同事有個網站,是一個http的網頁中,用<FrameSet>包了兩個https的<Frame> Frame1 & Frame2,三個網頁都在同一個網站上。問題來了,網頁在絕大部分的人的機器上都正常,就獨獨一位老兄的IE6,在操作過程中會出現Permission Denied的Script Error。

經檢查,問題出在Frame1中用了一段parent.Frame2.location.href的寫法去更動Frame2的URL,我們都知道這種寫法在跨Domain時會發生Permission Denied Error,但二個網頁明明是用https連向同一台Web Server,不應有跨Domain的問題存在才是。

我直覺判定這與<FrameSet>所在的URL是http脫不了關係,請他改用https,錯誤就消失了。

朝著這個方向在IE的安全設定中搜索,找到這個選項:

當這個選項被設為Diable時,http FrameSet中的https Frame間就無法互通。而Navigate sub-frames across different domains這個選項是設計用來阻止部分XSS攻擊,設定Disable是比較安全的,但事實證明這項限制也會造成某些網頁無法正常運作

為了避免User在"安全"與"可用"間天人交戰,我建議同事將最外層的http也改為https,就可避開此一限制。


Comments

# by chicken

提供兩個 link, 我也是常碰到這種問題... 這兩個網址都快會背了... Orz http://msdn2.microsoft.com/en-us/library/ms533028.aspx http://msdn2.microsoft.com/en-us/library/ms533740.aspx

Post a comment