2011-08-24 91 views
2

AJAX似乎是一个很好的办法,直到我们打AJAX客户端只能够从它们下载到哪里的服务器进行通信的限制,因此,秉承“同根同源的政策。 “使用JSON解决跨域问题的基于JavaScript的

有谁请告诉我如何才能JSON可以解决这个跨领域问题,如我所知JSON只是一种数据格式,称数据如何呈现。

请给你的这个 建议我的问题是如何XMLHttpRequest是由不同结构的数据格式

回答

2

JSONP维基百科上控制:

JSONP或“JSON与填充”是补充到基座JSON数据 格式,使用的允许页面从 服务器在不同域中请求数据的图案。 JSONP是这个问题, 的解决方案,以形成所谓的跨来源 资源共享一个较新的方法替代。

...

服务器然后包装了这个前缀,或“填充”的JSON响应,它发送到浏览器。当浏览器收到来自服务器的封装响应时,它现在是一个脚本,而不仅仅是一个数据声明。

1

看到这个wiki的帖子。它确实告诉你如何/为什么。但要准确:

它的工作原理,因为它不再JSON,但因为它解释为脚本/ JavaScript的

+0

谢谢!作为服务器端程序员,我可以问这个问题吗?如果我在同一台服务器上有两个域 - 如果我使用指向其他文件的文件的符号链接,是否可能?这是一种可接受的做法吗?或者,Wiki的方法表明是最好的? – Faron

0

几乎一样优雅的JSONP答案,但在加奖金:

  • 可以查询不是jsonp“知晓”的服务器。
  • 可能的服务器端的数据验证。

我的思路是在您自己的服务器上编写一个脚本,以代理请求和响应。

这样你也可以验证数据的内容。

此外jsonp要求请求的服务器将其json响应封装在回调函数中。对于查询的服务器是否支持jsonp,此解决方案是不可知的。

(编辑): 当然,这将是明智的,以确保,该脚本不允许大家代理一切:)