在跨站點XHR API變得廣泛支持之前,通過JavaScript製作跨站點請求的最佳方式是什麼?我一直在使用iFrame,但那些可能會有點混亂。有沒有更好的辦法? (更好,我的意思是更容易處理。)使用JavaScript製作跨網站請求的最佳方法?
此外,我更喜歡看到純JavaScript代碼,而不是像jQuery等框架。我使用我自己的迷你框架,我不想看看他們是怎麼做到的。
編輯:我忘了提及,我沒有控制目標服務器,所以我不能使用動態<script>
標記方法。
在跨站點XHR API變得廣泛支持之前,通過JavaScript製作跨站點請求的最佳方式是什麼?我一直在使用iFrame,但那些可能會有點混亂。有沒有更好的辦法? (更好,我的意思是更容易處理。)使用JavaScript製作跨網站請求的最佳方法?
此外,我更喜歡看到純JavaScript代碼,而不是像jQuery等框架。我使用我自己的迷你框架,我不想看看他們是怎麼做到的。
編輯:我忘了提及,我沒有控制目標服務器,所以我不能使用動態<script>
標記方法。
我知道有兩種常見的方式。一種是在你的服務器上使用代理,基本上是一個爲你讀取數據的php文件。
另一個是使用動態腳本標記。這裏更多的信息:這個幻燈片
http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS
第9頁也有一些信息:
如果你想抓住的數據是JSON,看看JSONP。它通過將<script>
標記注入到引用遠程服務器上的腳本的DOM中起作用。另一端的服務器返回一些調用數據的「回調」函數的json/javascript樣式響應。基本上遠程腳本將看起來是這樣的:
callbackfunc({'somedata':'testing'});
哪裏callbackfunc
是你在你的腳本中定義的功能。
你也可以看看easyxss(http://code.google.com/p/easyxss/wiki/InvokingRemoteMethods)。只需要幾行代碼就可以獲得跨域邊界的方法調用。
我無法控制目標的服務器,所以第二種方法不起作用。但代理方法+1,沒有考慮到這一點。 – 2009-06-04 01:49:21
不要嘗試一些黑客的東西,使用代理。如果您擔心某人使用代理服務器不好,請儘可能將其鎖定,以便它只能獲得您需要的代理服務。 – epascarello 2009-06-04 02:55:36