【发布时间】:2015-09-30 17:30:25
【问题描述】:
我尝试加载 Youtube 数据 API(通过在我的标题部分中注入它)。
以前效果很好,但突然间我只收到 307 个响应代码(并且没有实际内容)。
307 是temporary_redirect,这个页面:https://developers.google.com/youtube/v3/docs/core_errors
告诉我通过将请求转发到 307 响应的 Location 标头中指定的位置来获取内容。问题是响应的 Location 标头中没有任何内容! :-(
有谁知道发生了什么,如何解决它,以及如何防止它再次发生? (我是否应该创建代码以在收到 307 响应时将请求重新发送到新的 URI??)
这是我的注入代码(但它曾经完美运行):
var YTDtag = document.createElement('script'),
YTItag = document.createElement('script');
YTDtag.src = "https://apis.google.com/js/client.js?onload=apiReady"; // load YouTube data API
YTItag.src = "https://www.youtube.com/iframe_api"; // load YouTube Iframe API
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(YTDtag, firstScriptTag);
firstScriptTag.parentNode.insertBefore(YTItag, firstScriptTag);
但我从https://apis.google.com/js/client.js?onload=apiReady 得到的唯一响应是 307 号码,因此我的 apiReady 永远不会被调用。
如果我尝试通过将页面放在浏览器位置字段中“手动”加载页面,它似乎可以正常加载 - 但当我尝试通过我的 js 加载它时却不行? :-/
【问题讨论】:
-
当您尝试通过浏览器地址栏直接访问脚本 URL 时会发生什么?
-
然后我拿到了脚本,看起来还不错。
-
检查开发者工具,网络面板,是否发送相同的重定向状态码。
-
直接通过位置栏获取脚本似乎非常简单。它返回带有 200 代码的脚本(在我刷新缓存之前是 304)。顺便说一句:现在我又遇到了同样的问题。 307 代码且响应的位置标头中没有位置! :-( 我无法忍受不知道我的视频什么时候上线,什么时候不上线。:-6
-
我也试过用curl获取,完全没有问题。 Curl 也只是获取带有 200 代码的脚本。
标签: youtube-data-api http-status-code-307