我写了一个js小部件,用于在任何一个js的网站上列出一个github repos: http://gitview.logicalcognition.com
目前gitview.js点击gitview.php(我主持远程),然后点击api.github.com来提取用户/回购信息。最初,我只是将XHR GET直接发送到api.github.com,而不是通过代理,但我达到了相同的原始政策。
我尝试使用CORS或JSONP,但根据http://developer.github.com/v3/,这仅在原始域“注册为OAuth应用程序”时才有效。我不想让开发人员这样做只是为了使用小部件。
有什么建议吗?我错过了什么吗?
答案 0 :(得分:2)
链接的文档表明CORS需要注册域(如果您想要直接XHR,则使用),但不是JSON-P。使用JSON-P,您将以编程方式插入脚本标记(使用document.write
或DOM操作):
<script type="text/javascript"
src="https://api.github.com/some_request?callback=foo"
></script>
然后,这将以返回的数据作为参数调用全局函数foo
。由于这是脚本标记而不是XHR请求,因此不适用同源策略,并且不需要CORS授权。