17

我在http://beta.billboard.fm的应用程序在播放一首歌曲后在我的正常浏览会话中产生错误。

如果我以隐身模式重新加载页面,该应用程序将完全正常工作。我最近才开始遇到这些问题。我已完成清除所有缓存并且它再次工作,但只是暂时在抛出相同的错误之前。

此外,我禁用了所有浏览器扩展。

但是,无论我做什么,我都无法从 Youtube API 抛出这个错误:

无法将消息发布到http://www.youtube.com。收件人来源https://www.youtube.com

看起来安全协议不匹配。我尝试将它们更改为 https 或者只是在我这边一起删除“http:”。但它并没有解决问题。

有人知道这里发生了什么吗?

4

3 回答 3

4

在这一点上,我很清楚这是 Google/YouTube API 中的一个主要错误。他们在某处写了一些糟糕的代码。这个错误不是一个一致的东西。每个人的代码在很长一段时间内都可以正常工作,然后他们发现他们的网站突然停止正常工作,这一点很好地证明了这一点。此外,我上周遇到此问题的所有网站现在都可以正常运行 - 再次,无需我更改代码。

因此,虽然这样说很糟糕 - 谷歌和 YouTube 有责任解决这个问题并提供实际工作的 API 广告......在我看来,我们不能靠自己做任何事情:(

于 2013-12-19T18:55:41.980 回答
3

更新 2 - 2013 年 12 月 24 日:此解决方案实际上根本没有解决问题:

在关注 poulified 在他的回答中提到我的线程之后,论坛中的用户发布了以下解决方案,这似乎对我有用(更新:在随机页面加载时仍然遇到问题:/):

大家好,

它正在用 https:// 替换 http://

示例:http: //jsfiddle.net/8tkgW/29/

请确保以下提示

  1. 加载 iframe api https://www.youtube.com/player_api
  2. 加载 iframe src 路径:https ://www.youtube.com/embed/0GN2kpBoFs4?rel=0

如果通过新的 YT.Player 加载播放器,则必须检查 iframe src 路径:

setTimeout(function(){
    var url = $('#iframe_youtube').prop('src');
    if (url.match('^http://') {
        $('#iframe_youtube').prop('src', url.replace(/^http:\/\//i, 'https://'));
    }
}, 500);

请参考我的github项目:

https://github.com/appleboy/js-video-player/blob/master/js/jsplayer.js#L120

于 2013-11-22T04:50:15.230 回答
3

我遇到了同样的问题 - 我也尝试将我的链接更改为 http: 到 https: ,反之亦然,但没有运气。我在 Google Groups 上发现了这一点,但到目前为止还没有任何回应。https://code.google.com/p/gdata-issues/issues/detail?id=4697

清除我的缓存允许播放器播放一些视频,但在 3 或 4 之后,同样的错误会再次弹出。

于 2013-11-20T03:52:40.433 回答