![](/img/trans.png)
[英]Getting around the Same Origin Policy for a javascript page hosted locally
[英]Getting around same origin policy in javascript without server side scripts
我有一個不允許服務器端腳本編寫的環境(在服務器上“安裝”腳本非常困難)。 我嘗試使用iframe來違反javascript的同源起源; 然而,這不起作用。 還有其他我不知道的變通方法嗎?
謝謝!
正如David Dorward所說,JSON-P是最簡單和最快的; 然而,還有另一個技巧,特別是使用兩個iframe。
兩個不使用JSONP解決此問題,您可以執行以下操作。 此技術假定您對父頁面具有某種開發訪問權限。
兩個域/站點上有三個頁面。
父頁面和xdcomm頁面托管在同一域中的頁面,內容頁面托管在任何其他域上。 內容頁面作為iframe嵌入到父頁面中,xdcomm頁面作為隱藏的iframe嵌入到內容頁面中。
xdcomm頁面包含一個非常簡單的腳本,它檢測查詢字符串中的GET參數,為method
和args
變量解析該字符串(其中args
是一個JSON編碼的字符串),然后在父頁面中使用指定的參數執行指定的方法。 這里可以看到一個例子(查看源代碼)。
即使JavaScript的同源策略限制一個域上的代碼訪問另一個域的代碼,但域是否相互嵌套並不重要(域A,嵌套在域B中,嵌套在域A中)。
因此,簡而言之,內容頁面通過將iframe的來源更改為http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4]
將內容頁面通過xdcomm頁面發送到父頁面http://domaina.com/xdcomm.html?src=foo&args=[1,2,3,4]
。 這相當於在父頁面中執行foo(1,2,3,4)
。
另外,要知道已經存在可以幫助您解決此問題的庫,例如easyxdm 。 我在這里解釋的是他們使用的技術之一的基礎,雖然它可能不那么花哨,但它肯定是一個功能齊全且輕量級的實現。
希望不是,因為這將是一個安全漏洞! :)
但是,如果您的網站都是同一個域中的子域,那么document.domain可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.