我正在使用Youtube API(https://developers.google.com/youtube/v3/?hl=zh-CN),尤其是:播放列表,播放列表项和要加载的频道。
这在所有使用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中是“无传输”错误)。
我尝试使用xdomain
插件(https://github.com/jpillora/xdomain)
和XDomainRequest
插件(https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest#instructions)
如这里的建议,没有成功。我缺少的东西对其他人有用吗?
问题是,您无法从http站点向https服务进行ajax调用!!避开我发现的所有示例失败:
- 请求必须针对与托管页面相同的方案
此限制意味着,如果您的AJAX页面位于http://example.com,则您的目标URL也必须以HTTP开头。同样,如果您的AJAX页面位于https://example.com,则目标URL也必须以HTTPS开头。
我们绝对希望阻止HTTPS页面对基于HTTP的资源发出XDomainRequests,因为这种情况提出了混合内容安全威胁,许多开发人员和大多数用户都不了解。
但是,此限制过于广泛,因为它阻止HTTP页面发出以HTTPS页面为目标的XDomainRequests。虽然HTTP页面本身确实受到了威胁,但没有理由禁止它安全地接收公共资源。
最糟糕的是,Same Scheme限制意味着使用file://方案在本地测试其页面的Web开发人员将发现,由于file://与http://或https:/不匹配,所有XDomainRequests均被阻止。 /,这是唯一有效的目标方案(第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:带有Visual Studio内置ASP.NET开发服务器的HTTPS
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句