首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jqXHR - http-status-code-403 (但状态代码为0)

jqXHR - http-status-code-403 (但状态代码为0)
EN

Stack Overflow用户
提问于 2011-04-14 10:23:48
回答 3查看 15.7K关注 0票数 10

我得到了状态代码0 ..。但这是代码403。有人能告诉我问题出在哪里吗?

JQUERY

代码语言:javascript
复制
  var jqxhr = $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/users/bernd/favorites?alt=json',
        dataType: 'json'
    }).success(function(xhr) {
        alert(xhr.status);
    }).error(function(xhr) {
        alert(xhr.status);
        return false;
    })

演示 -> http://jsfiddle.net/QFuBr/

提前感谢!

彼得

EN

回答 3

Stack Overflow用户

发布于 2011-04-16 20:28:46

您需要设置dataType: "jsonp",并且您需要以用户的身份登录以获取收藏夹。在本例中,我使用自己的用户名grabot,警报返回为成功。

如果您对试图访问的帐户没有有效的cookie,那么api调用将返回一个包含内容"Favorites of requested user are not public.""Favorites of requested user are not public."

代码语言:javascript
复制
$(function() {
    var jqxhr = $.ajax({
        url: 'http://gdata.youtube.com/feeds/api/users/gradbot/favorites?alt=json',
        dataType: 'jsonp'
    }).success(function(data, status) {
        alert(status);
    }).error(function(xhr) {
        alert(xhr.status);
    })
});
票数 2
EN

Stack Overflow用户

发布于 2011-04-16 21:00:43

403是因为您需要为其视频被访问的用户提供凭据。假设提供了正确的凭据,由于跨域限制,请求仍将失败。

在大多数情况下,状态代码0意味着无法将请求发送到服务器。以下是Chrome控制台日志显示的小提琴示例。

XMLHttpRequest无法加载http://gdata.youtube.com/feeds/api/users/bernd/favorites?alt=json。访问控制-允许-原产地不允许使用http://fiddle.jshell.net .

Youtube,实际上所有Google数据API的支持JSONP,但是要使用它,您必须传递一个带有值json-in-scriptalt参数,并将dataType指定为jsonp。jQuery将为您提供回调参数。根据经验测试,Youtube似乎并不关心alt参数,特别是json-in-script参数。只要指定了callback参数,alt参数就可以只取值json

http://gdata.youtube.com/feeds/api/users/gradbot/favorites?alt=json http://gdata.youtube.com/feeds/api/users/gradbot/favorites?alt=json&callback=foo

下面是一个可公开访问的提要的工作实例

代码语言:javascript
复制
$.ajax({
    url: 'http://gdata.youtube.com/feeds/mobile/videos?alt=json-in-script',
    dataType: 'jsonp',
    success: function(data) {
        // do something with data
    }
});
票数 1
EN

Stack Overflow用户

发布于 2011-04-16 20:29:44

由于大多数现代浏览器的安全性限制,您无法进行跨域请求(无论是GET请求还是POST请求)。

如果仍然希望从其他域获取数据,请考虑使用安装在服务器上的反向代理并发送所有请求。对于浏览器来说,数据仍然是来自同一个域。

Apache中最流行的一种是mod_reverse,但是根据服务器环境的不同,还有其他的选择。

如果Google支持JSONP,另一种选择是用户JSONP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5661813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档