IE9及更低版本中的Youtube API

时间:2015-09-21 14:25:02

标签: jquery internet-explorer-8 youtube-api internet-explorer-9 cors

我正在使用Youtube API(https://developers.google.com/youtube/v3/?hl=en),特别是:播放列表,播放列表项和要加载的频道。

这在所有浏览器中都非常有用,etest IE9及更低版本。在这里,我总是收到"No Transport"错误。

这是一个简单的示例代码:

<!Doctype html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Youtube API Test</title>
</head>    
<body>
    <code>    
    </code>    
    <script src="Scripts/jquery-2.1.4.js"></script>  
    <script>
        $.ajax({
            cache: false,
            type: 'GET',
            crossDomain: true,
            url: 'https://www.googleapis.com/youtube/v3/playlistItems',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (data) {
                $('code').text(JSON.stringify(data, null, 4));
            },
            error: function (err) {
                $('code').text(JSON.stringify(err, null, 4));
            }
        });
    </script>
</body>
</html>

(注意我删除了参数,在Chrome和FF中会返回youtube错误,在IE中出现“No Transport”错误)。

我尝试使用xdomain插件(https://github.com/jpillora/xdomain

XDomainRequest插件(https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest#instructions

建议here,但没有成功。我遗失的任何东西,对其他人都有用吗?

2 个答案:

答案 0 :(得分:0)

问题是,您无法从 http 网站拨打电话到 https 服务!! Esle我发现的所有例子都失败了:

  
      
  1. 请求必须定位到与托管页面相同的方案
  2.         

    此限制意味着如果您的AJAX页面位于   http://example.com,那么您的目标网址也必须以HTTP开头。   同样,如果您的AJAX页面位于https://example.com,那么您的   目标网址也必须以HTTPS开头。

         

    绝对是我们阻止HTTPS页面制作的意图   基于HTTP的资源的XDomainRequests,如该场景所示   混合内容安全威胁,许多开发人员和大多数用户都这样做   不明白。

         

    但是,这种限制过于宽泛,因为它会阻止HTTP   发布针对HTTPS页面的XDomainRequests的页面。虽然它是   确实HTTP页面本身可能已被泄露,没有   因为应该禁止接收公共资源   安全

         

    最糟糕的是,相同的方案限制意味着Web开发人员   使用file:// scheme在本地测试他们的页面会找到它   所有XDomainRequests都被阻止,因为file://不匹配   http://或https://,这是唯一有效的目标方案   (第1点)。要解决此问题,Web开发人员必须托管他们的   本地Web服务器上的页面(例如IIS,Visual Studio托管)   服务器等)。

来源:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

使用Visual Studio的内置ASP.NET开发服务器进行HTTPS:HTTPS with Visual Studio's built-in ASP.NET Development Server

与SO相关:JavaScript cross-domain call: call from HTTP to HTTPS

答案 1 :(得分:0)

您是否尝试过使用gapi客户端库,它会自动发现youtube api描述并提供REST接口的包装器。

https://developers.google.com/api-client-library/javascript/

该客户端库声明支持IE8 +,并且集成了一些智能代码以克服浏览器限制。