2012-02-13 32 views
0

我有一位客戶在嵌入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中。奇怪的權利?

回答

0

我已經在過去解決了Flash跨域問題,但還沒有遇到這種特殊情況。我不認爲她的網站建設者會允許將跨域策略文件部署到她的網站的根目錄?

如果是這樣你可以嘗試部署的crossdomain.xml:

<cross-domain-policy> 
<allow-access-from domain="*.flashfiledomain.com" secure="false"/> 
</cross-domain-policy> 

...她站點的根目錄,看看是否能解決問題。我假設Flash文件和PHP腳本都在同一個域中?