Javascript JSONP交叉源错误';不存在访问控制允许原点标头';

Javascript JSONP交叉源错误';不存在访问控制允许原点标头';,javascript,ajax,json,jquery,Javascript,Ajax,Json,Jquery,我正在使用Ajax通过twitter的API从twitter获取数据。我正在尝试使用jsonp,从我所看到和理解的情况来看,我认为我做的每件事都是对的(显然不是这样) $(文档).ready(函数(){ $.ajax({ 键入:“GET”, 数据类型:“jsonp”, 数据:{}, 跨域:“true”, url:“http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?", 错误:函数(textStatu

我正在使用Ajax通过twitter的API从twitter获取数据。我正在尝试使用jsonp,从我所看到和理解的情况来看,我认为我做的每件事都是对的(显然不是这样)


$(文档).ready(函数(){
$.ajax({
键入:“GET”,
数据类型:“jsonp”,
数据:{},
跨域:“true”,
url:“http://twitter.com/status/user_timeline/padraicb.json?count=10&callback=?",
错误:函数(textStatus,errorshown){
警报(“错误”);
},
成功:功能(msg){
控制台日志(msg);
}
});
});
上面的代码在Chrome和Firefox XMLHttpRequest cannot load?中都生成了一个错误?。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“null”

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

一个这样的API在进入地址栏时也可以工作

因此,在广泛搜索和查找之后,我需要了解如何将原点设置为
*
?我以为这更像是服务器端的问题

我也尝试了
?回调?
,但没有效果


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

标题应该在Twitter服务器响应时设置。如果不可用,则意味着您无法使用AJAX从其自己域之外的任何位置访问此资源。
因此,您不能在浏览器上使用来自javascript的API。您已经设置了自己的服务器,它充当与twitterapi通信的中间资源


编辑:同样值得指出的是,twitter正在关闭未经验证的API请求。您需要使用twitter设置应用程序,并使用API密钥发出请求

所述资源支持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);
        }
    });
});

演示:

必须在服务器上设置“访问控制允许源站”标题。在这种情况下,服务器属于Twitter@Paul Rene这不是他们自动配置的东西?作为一个公共API,我认为这应该由他们来处理?@Corey,这是出于设计。他们不再希望未经验证的请求进入他们的API。他们希望您使用API密钥和服务器发出请求。好的,那么直接通过浏览器访问它是如何成功的,这是否意味着
Access Control Allow Origin
设置为
*
还是服务器以不同的方式处理此请求?顺便说一句,我不是指Twitters API。@Corey是的,直接在浏览器中打开URL不符合
Access Control Allow Origin
标题,服务器处理方式不同。Twitter已经在他们的日程安排中停止未经验证的请求,例如您的示例。。我不确定是否已经完成了。但是原则(和我的答案)对于所有API都是一样的。@RobW
t
t
。。。关键是案例sensitive@RobW不太清楚-它会失败,但如果您使用$.getJSON(),它会工作
$(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);
        }
    });
});