我有一位客戶在嵌入iframe的flash對象時發生了一些奇怪的問題,該對象稱爲PHP腳本並傳遞POST變量。Internet Explorer,Flash POST變量和IFRAMES
我想我終於明白髮生了什麼事情,但希望澄清我的預感是否正確。
的設置是種複雜,所以請多多包涵......
她的網站,使用這些網站的建設者設置之一,所以這是一個有點有限在它能做什麼。她想包含我的Flash應用程序,但不能,因此,她將Flash應用程序放在另一個域中,然後將其嵌入到iframe中。
Flash應用程序所做的一部分是打開一個單獨的窗口,然後調用一個PHP腳本,並將POST變量傳遞給它。
在Chrome,Safari和Firefox上運行。在IE上,就好像沒有發佈POST變量。
使用HTTP嗅探器,我能夠確認變量確實已發送,但結果清楚地表明PHP腳本沒有看到它們。
這真的讓我瘋狂,直到我記得在這裏有兩個不同的領域。
記住她是如何將一個域中的內容嵌入到不同域中的iframe中的?
所以我認爲這是一個跨域安全問題,導致POST數據被阻塞服務器端。
但是爲什麼它在其他瀏覽器中工作?
這裏是我的理論......
在Chrome中,Firefox和Safari,瀏覽器將數據發送到腳本的頁面內的IFrame的鼻祖。因此,始發者和目標腳本位於同一個域中。
在IE中,瀏覽器將數據發送到以CONTAINER頁面爲始發者的腳本。在這種情況下,始發者和目標腳本位於不同的域上,並且服務器會阻止數據。
所以,你有什麼感想?這聽起來像是一個有效的解釋嗎?這是IE的一個已知功能嗎?符合標準的瀏覽器在這種情況下應該做什麼?
UPDATE:
事實證明,這個問題不只是跨域。即使來自同一網站的iframe內容仍然會發生。只在IE中。奇怪的權利?