gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:32:25 27 4
gpt4 key购买 nike

我得到状态码 0 ... 但它是代码 403。谁能告诉我问题出在哪里?

JQUERY

  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/

提前致谢!
彼得

最佳答案

服务器给浏览器一个 403 错误,因为你没有访问资源的权限,因为报告了错误消息(“请求用户的收藏夹不公开。”) .

但是,在 jsFiddle 示例中,服务器甚至获取请求。

您不能发出跨浏览器的 AJAX 请求。这称为 same-origin policy .这是出于安全原因,以防止恶意编码者在您不知情的情况下做出不愉快的事情。这是一种生硬的工具,但却是一种有效的工具。

当您甚至没有向服务器发送请求时,就没有状态代码。这由 XMLHTTPRequest 对象(及其 jqXHR 包装器)报告为 0

基本上,您无法在浏览器中执行您想执行的操作。

如果您需要浏览器像这样异步访问数据,则需要在您的服务器上编写一个包装器以从远程服务器获取信息并将其提供给浏览器。有一个解决方法(称为 JSONP – JSON with Padding)但我认为 YouTube 不支持它。


编辑:根据 gradbot's answer ,可以通过更改代码将 dataType 设置为 jsonp 来执行 JSONP 请求。

但是,您现在无法使用 xhr.status。这是因为 JSONP 不使用 XHR 对象,因此没有可检查的状态。

Here's a working example using the feed gradbot suggested .请注意,结果对象被传递给处理程序,而不是 jqXHR 对象。

关于javascript - jqXHR - http-status-code-403(但状态码为 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5661813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com