同源政策 - AJAX&使用公共API

时间:2010-08-21 07:36:35

标签: javascript ajax xmlhttprequest same-origin-policy

我知道如果在我自己的网页上,如果我的用户在: http://www.example.com/form.php

我从该页面发出ajax请求: http://example.com/responder.php

由于同源策略(子域不同),它将失败。

我想要了解的是,当请求和服务器明显不同时,AJAX请求如何从API中提取数据,如flickr。


编辑:

例如:为什么这段代码有效?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...'

Referred this Community Wiki) 是使用Cross Origin Resource Sharing吗?

谢谢!

1 个答案:

答案 0 :(得分:17)

解决同源策略的方法很少。一种流行的技术是使用“脚本标记注入”,例如JSONP。由于<script>标记不受同源策略的约束,因此第三方域上的脚本可以提供与提供的回调函数交互的可执行代码。您可能需要查看以下文章中的“提示与技巧”部分,以便进一步阅读以下主题:

您可能还有兴趣查看以下Stack Overflow帖子,以便进一步阅读其他技术以解决同源策略:


更新:进一步更新的问题:

引用$.getJSON()上的jQuery文档:

  

如果网址包含字符串“callback =?”在URL中,请求被视为JSONP。