【问题标题】:Same Origin Policy - AJAX & using Public APIs同源策略 - AJAX 和使用公共 API
【发布时间】:2011-04-01 23:54:48
【问题描述】:

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

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

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

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


编辑:

eg:为什么这段代码有效?

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

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

谢谢!

【问题讨论】:

    标签: javascript ajax xmlhttprequest same-origin-policy


    【解决方案1】:

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

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


    更新:进一步更新问题:

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

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

    【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2014-07-23
    • 2011-07-28
    • 1970-01-01
    • 2011-07-20
    • 2013-01-18
    • 2014-10-09
    • 2010-11-13
    • 2012-08-12
    相关资源
    最近更新 更多