javascript - JSONP 跨源错误 'No Access-Control-Allow-Origin header is present'

标签 javascript ajax json jquery

我正在使用 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 无法加载 http://twitter.com/status/user_timeline/padraicb.json?count=10&callback= ?。请求的资源上不存在“Access-Control-Allow-Origin” header 。因此不允许访问 Origin 'null'。

根据我的理解,我认为拥有 &callback=? 并将类型设置为 jsonp 将允许此操作成功。更重要的是,我可以看到 JSON 对象在 fiddler 中返回,它只是没有被脚本处理。我尝试了多个 API,但都出现了同样的问题。

当输入地址栏时,其中一个这样的 API 也可以工作。

因此,经过大量搜索和查看后,我是否需要了解如何将原点设置为 *?我认为这更多是服务器端问题?

我也尝试过 ?callback? 但无济于事。

任何想法都会很棒,谢谢。

最佳答案

上述资源支持jsonp,所以不需要CORS...问题是datatype: 'jsonp' 应该是dataType: 'jsonp'

$(document).ready(function () {
    $.ajax({
        type: 'GET',
        dataType: 'jsonp',
        data: {},
        url: "http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?",
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(jqXHR)
        },
        success: function (msg) {
            console.log(msg);
        }
    });
});

演示:Fiddle

关于javascript - JSONP 跨源错误 'No Access-Control-Allow-Origin header is present',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20518653/

相关文章:

javascript - 将现有单选按钮更改为 <a href>

javascript - 在 JavaScript 中使用 forEach 方法

javascript - 在 Ajax 中优雅地处理 404

java - 将JsonObject从Google转换为JsonNode再转换为Jackson,然后将多个JsonNode作为数组传递给Web服务

针对 json/array 的 jQuery 文本字段验证

Javascript 随机显示/隐藏不起作用

javascript - 如何在ng-repeat中显示选定的数据

javascript - 从 iFrame 读取父文档并更改父文档

javascript - select 在 div 刷新后不进行 ajax 调用

jquery - 可以将 URL 添加到 jQuery 数组并对其进行一些检查