基于JavaScript的AJAX似乎是一种很好的方法,直到我们遇到AJAX客户端的限制,只能通过它们下载的位置与服务器通信,从而遵守“相同的原始策略”。
有人可以告诉我JSON如何解决这个跨域问题,因为据我所知,JSON只是一种说明数据如何呈现的数据格式。
请就此提出建议 我的问题是XMLHttprequest是如何由不同结构的数据格式控制的
答案 0 :(得分:2)
请参阅维基百科上的JSONP:
JSONP或“带填充的JSON”是对基本JSON数据的补充 格式,允许页面从a请求数据的使用模式 服务器在不同的域中。 JSONP是这个问题的解决方案, 形成一种名为Cross-Origin的更新方法的替代方案 资源共享。
...
然后,服务器在将其发送到浏览器之前,使用此前缀或“padding”包装其JSON响应。当浏览器从服务器收到包装的响应时,它现在是一个脚本,而不仅仅是一个数据声明。
答案 1 :(得分:1)
请参阅此wiki帖子。它确实向您展示了如何/为什么。但要准确:
它有效,因为它不再是json,而是因为它被解释为script / javascript
答案 2 :(得分:0)
几乎没有jsonp那么优雅的答案,但还有额外的奖励:
我的想法是在您自己的服务器上编写一个代理请求和响应的脚本。
通过这种方式,您还可以验证数据的内容。
此外,jsonp要求请求的服务器将其json响应封装在回调函数中。这个解决方案是不可知的,以便查询的服务器能够支持jsonp。
(编辑): 当然,确保脚本不允许每个人代理所有内容是明智的:)