2017-10-18 83 views
1

今天發生了一件奇怪的事情,它正在測試我正在開發的一個網站:我試圖用jquery訪問iframe中的元素,令我驚訝的是我能夠訪問它們並修改它們。令人驚訝的是,因爲iframe不在同一個域中,因此我不應該爲「同源策略」做到這一點(或者我錯了?)。使用jQuery查看iframe內容後使用瀏覽器

問題是,它只能在用瀏覽器「檢查」任何iframe的元素之後才能完成(本例中爲chrome)。如果稍後我「檢查」不在iframe內的任何網站元素,那麼我將失去該「超級大國」並獲得預期結果,即由於「同源策略」而不允許jquery訪問。

問題: 1.-這是否應該發生? 2.-如果它可能暗示安全風險,是否有辦法阻止它? 3.-如果這是假設發生,是安全的,我怎麼能jQuery的「模擬」瀏覽器的「檢查」,讓我能訪問內部框架元素和修改它們

+0

你在控制檯上運行jQuery嗎? –

+0

是的,所描述的測試是來自Chrome的控制檯 – Roberto

+1

在控制檯中,您可以選擇希望運行JavaScript的幀級別。因此,您可以在頁面內的任何iframe中運行jQuery,而不考慮源。如果您確定您在* top *框架中運行JavaScript,並從那裏訪問不同的原始iframe,那麼這將意想不到(我必須自己嘗試複製它以收集更多信息)。 –

回答

0

當你檢查的iframe(測試Chrome),它會自動將控制檯的上下文設置爲iframe的上下文。因此,您可以直接在iframe的內容上運行任何JavaScript。但是它無法從父級(iframe被實例化的地方)訪問它,因爲這樣的行爲可能被視爲安全缺陷。

舉個例子,當你嘗試在父上下文的訪問(在這種情況下,父親是的jsfiddle的iframe的喲天亞社看到左上方): Accessing from parent context

,然後當我切換上下文到iframe的我試圖訪問: Accessing from the iframe's context

希望這總結的答案,可以幫助其他人可能有類似的問題。

+0

非常感謝Alex爲您的耐心和時間。將您的文字作爲對我的問題的迴應進行解釋: – Roberto

+1

非常感謝Alex爲您的耐心和時間。將您的文本解釋爲對我的問題的迴應:回覆1.-是的,這是假設發生的,但僅在瀏覽器的控制檯中出現,而不是用於編碼的js或jquery。迴應2.-無需阻止它,因爲它只能從瀏覽器的控制檯手動完成(這是安全的)。 3.-你不能jquery「模擬」瀏覽器「檢查」訪問iframes元素並修改它們。 – Roberto

相關問題