2010-07-07 65 views
9

有沒有辦法不使用服務器代理來執行跨域GET或POST請求?跨域在JS/JQuery中獲取請求

+8

JSONP - HTTP:// ajaxian.com/archives/jsonp-json-with-padding – 2010-07-07 23:24:50

+0

我應該澄清,我的GET請求的響應是不是JSON格式,所以我不認爲$ .getJSON的作品 – Crothers 2010-07-07 23:29:48

回答

14

如果你只用當天的瀏覽器,並已超過了外部域的控制,你可以使用Cross-Origin Resource Sharing [CORS]

大多數人沒有這樣的奢侈,所以你要麼必須使用JSON與填充[ JSONP],或者您需要使用serverside代理。

+2

優秀的答案。更多信息可以在[this stack-o question]獲得(http://stackoverflow.com/questions/5908195/jquery-and-cross-domain-post-requests);並且,[檢查這篇博客文章](http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/);另外,[這篇mozilla-developer-network文章](https://developer.mozilla.org/En/HTTP_access_control)非常棒,有更多資源的鏈接。 [編輯]:請注意,爲了啓用CORS,服務器端腳本必須使用特殊標題進行回覆。 – David 2011-11-22 15:27:12

+0

看看這裏:http://www.html5rocks.com/en/tutorials/cors/ – 2013-04-23 00:17:24

1

據我所知,沒有辦法在JS中創建一個跨域請求,但你可以查詢你的服務器並從那裏發出請求。

編輯:正如Russ Cam在上面所說,看看JSONP

-2

AJAX跨域是一個低成本的庫,允許執行跨域AJAX請求。 http://www.ajax-cross-domain.com/

+0

這將是偉大的,如果下來選民留下評論所以公衆可以接受教育,爲什麼這是一個不好的答案。 – 2012-04-30 18:44:32

+1

是的,請讓我知道,因爲我已經在幾個項目中使用過這個庫,並且沒有遇到任何問題。 – Ivan 2012-05-03 06:55:58

+5

它使用通常不理想的第三方服務。 – 2012-12-28 00:22:49

0

您可以使用Flash。 Flash允許您向另一個服務器發出跨域請求,只要它提供Flash跨域策略文件(XML文件)即可。所以你需要對其他服務器進行管理訪問才能設置它。

如果你覺得這個選擇可能是你在找什麼,或者你想要做的SSL/TLS跨域,檢查出的開源Forge項目:

http://github.com/digitalbazaar/forge/blob/master/README