2014-01-25 58 views
2

我正在開發一個Web應用程序。 在這個Web應用程序中,我必須從iframe中的不同服務器(例如:www.xyz.com)加載網頁。但有時,當我嘗試從iframe中的某個不同服務器加載網頁時,服務器會用位置標題字段中的重定向鏈接以HTTP狀態代碼302(代表重定向)進行響應。發生這種情況時,主窗口(我的web應用程序)被重定向,而不是僅在iframe中發生重定向。我怎樣才能確保重定向只發生在iframe而不是主窗口?HTTP在iframe中重定向而不是在父窗口中重定向

+0

這不可能在服務器端只重定向。我敢打賭,你在iframe中包含的網站有一個特殊的保護措施,當它檢測到它只是簡單地使用JavaScript來突破iframe並重新加載父項。您可以做的最好的事情是與您嘗試在iframe中顯示的網站的所有者進行交談。 –

回答

6

使用沙箱= 「...」

  • 允許表單允許表單提交
  • 允許,彈出窗口允許彈出窗口
  • 允許指針鎖定允許指針鎖定
  • 允許-same-起源允許文檔保持其原點
  • allow-scripts允許JavaScript執行,並且還允許功能自動觸發
  • 允許頂部導航允許文檔導航的頂層窗口

頂部導航是要防止什麼打出來的框架,所以離開了這一點,它不會被允許。任何遺漏將被阻止

ex。

 <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms" src="http://www.example.com"</iframe> 
+0

這不會在iframe中導航,而是執行實際的彈出窗口。不要以爲這是問題。 –

0

的問題不在於你的重定向,但對之前發生的事情:我想在用戶提交表單,通過POST和web服務器回覆302重定向按照最佳做法。

如果一個<form>action屬性指向另一個頁面,其答案將重定向頂部 iframe。我找不到任何參考文件說明這種行爲,但這是它在當前瀏覽器中的作用。

的解決方案是將target屬性設置爲_self

<iframe> 
    ... 
    <form action="http..." target="_self" > 
    ... 
</iframe> 

的​​屬性不會在這裏幫助,您可能要忽略的屬性,或者至少設置allow-forms allow-navigation