我正在使用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,但没有成功。我遗失的任何东西,对其他人都有用吗?
答案 0 :(得分:0)
问题是,您无法从 http 网站拨打电话到 https 服务!! Esle我发现的所有例子都失败了:
- 请求必须定位到与托管页面相同的方案
醇>此限制意味着如果您的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托管) 服务器等)。
使用Visual Studio的内置ASP.NET开发服务器进行HTTPS:HTTPS with Visual Studio's built-in ASP.NET Development Server
答案 1 :(得分:0)
您是否尝试过使用gapi客户端库,它会自动发现youtube api描述并提供REST接口的包装器。
https://developers.google.com/api-client-library/javascript/
该客户端库声明支持IE8 +,并且集成了一些智能代码以克服浏览器限制。