【发布时间】:2013-12-29 09:32:18
【问题描述】:
我正在使用 Ajax 通过他们的 API 从 twitter 获取数据。我正在尝试使用 jsonp,从我所看到和理解的情况来看,我认为我做的一切都是正确的(但显然不是)。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function () { $.ajax( { type: 'GET', datatype: 'jsonp', data: {}, crossDomain: 'true', url: "http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?", error: function(textStatus, errorThrown) { alert("error"); }, success: function(msg) { console.log(msg); } }); }); </script>
上面的代码在 Chrome 和 Firefox 中都会产生错误 XMLHttpRequest cannot load http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'null'。
据我了解,我认为拥有&callback=? 并将类型设置为jsonp 可以让这成功。更重要的是,我可以看到在提琴手中返回的 JSON 对象只是没有被脚本处理。我已经尝试了多个 API,但出现了相同的问题。
当输入地址栏时,这样的一个 API 也可以工作。
所以我经过广泛的搜索和寻找我需要一些如何将原点设置为*?我认为这更像是服务器端问题?
我也尝试过?callback?,但无济于事。
任何想法都会很棒,谢谢。
【问题讨论】:
-
必须在服务器上设置 Access-Control-Allow-Origin 标头。在这种情况下,服务器属于 Twitter。 Read more here
-
@Paul Rene 所以这不是他们会自动配置的东西吗?作为一个公共 API,我认为这将由他们处理?
-
@Corey 这是设计使然。他们不再需要未经身份验证的 API 请求。他们希望您使用 API 密钥和服务器来发出请求。
标签: javascript ajax json jquery