我有,具有在頁面加載沒有來源的iframe一個頁面,只是使用硬編碼的HTML這樣的:正在改變一個iframe的src(與主機頁面不同的域名)與JavaScript認爲跨站點腳本?
<iframe id="theframe" src="">
<html>
<body>
<form name="theform" action="http://domainB.com/new" method="POST">
<input type="text" />
</form>
</body>
</html>
</iframe>
的形式在jQuery中使用遂以
$('#theform').submit();
這將導致源的iframe從無(相同的域)更改爲表單數據發送和存儲的domainB.com。
然後我耽誤1秒,以顯示成功味精,然後要設定的框架回到它通過更改源回到沒什麼(同一域),並追加了原來的形式,這樣的原始內容:
$('iframe').attr('src', '');
$('iframe').contents().find('body').empty();
$('iframe').contents().find('body').append('<form name="theform" action="http://domainB.com/new" method="POST"><input type="text" /></form>');
然而,它不工作......即使我不試圖訪問domainB的內部內容,這是跨網站腳本,我只是設置iframe的src回到domainA?
如果是這樣,那麼無論如何設置src一旦它被更改爲不同的域?
(正如我寫的最後一句話,我意識到我可以刪除iframe並將其替換爲新的,但我仍然想知道是否將源改爲跨站點,這就是爲什麼它不工作?)
我可以問你爲什麼一半的方式,提交一個通過AJAX(你甚至可以使用該應支持一個js庫..是那個jQuery?),並且你正在使用那個可怕的iframe解決方案? [順便說一句,你不能將請求從js發送到外部域,所以你應該通過服務於第一頁的服務器上的頁面代理提交。] – redShadow
我使用的是iframe,因爲我需要提交頁面而沒有重新加載主頁,我知道ajax這樣做,但我不能使用Ajax,因爲單獨的域。 (跨站點腳本)因此,我在iframe中提交表單,只刷新表單,而不是主頁面。 – tsdexter