2010-07-07 66 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