使用JSON解决跨域问题

时间:2011-08-24 09:15:17

标签: ajax

基于JavaScript的AJAX似乎是一种很好的方法,直到我们遇到AJAX客户端的限制,只能通过它们下载的位置与服务器通信,从而遵守“相同的原始策略”。

有人可以告诉我JSON如何解决这个跨域问题,因为据我所知,JSON只是一种说明数据如何呈现的数据格式。

请就此提出建议 我的问题是XMLHttprequest是如何由不同结构的数据格式控制的

3 个答案:

答案 0 :(得分:2)

请参阅维基百科上的JSONP

  

JSONP或“带填充的JSON”是对基本JSON数据的补充   格式,允许页面从a请求数据的使用模式   服务器在不同的域中。 JSONP是这个问题的解决方案,   形成一种名为Cross-Origin的更新方法的替代方案   资源共享。

...

  

然后,服务器在将其发送到浏览器之前,使用此前缀或“padding”包装其JSON响应。当浏览器从服务器收到包装的响应时,它现在是一个脚本,而不仅仅是一个数据声明。

答案 1 :(得分:1)

请参阅此wiki帖子。它确实向您展示了如何/为什么。但要准确:

它有效,因为它不再是json,而是因为它被解释为script / javascript

答案 2 :(得分:0)

几乎没有jsonp那么优雅的答案,但还有额外的奖励:

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

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

通过这种方式,您还可以验证数据的内容。

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

(编辑): 当然,确保脚本不允许每个人代理所有内容是明智的:)