我已成功实施“基于YouTube API浏览器的Ajax进度条上传”(感谢最近由youtube API小组实施的对“uploads.gdata.youtube.com”的CORS支持)
然而,有一个障碍......在来自youtube API的最终回复中,它尝试通过发回位置重定向标题(302)来重定向浏览器...
虽然这可能在非AJAX场景下按预期工作,但在AJAX请求中是不允许的......
我看到了3个问题的可能解决方案,其中任何一个都能正常工作......
如果youtube API允许简单地获取刚上传的视频的“视频ID”,而不必在任何地方重定向,那么对每个人来说这都会简单得多得多。我忽略了API中的任何此类选项吗?
在AJAX中是否有一种方法可以告诉请求,而不是关注重定向标题?
OR有什么办法可以“允许”AJAX请求场景中的跨域重定向? (重定向由youtube.com发起,而用户在另一个域上,因此跨域重定向问题)
答案 0 :(得分:0)
GData API的v1 / v2不支持此功能。
对于YouTube Data API v3,我在https://youtube-api-samples.googlecode.com/git/yt-upload-javascript/index.html(https://code.google.com/p/youtube-api-samples/source/browse/#git%2Fyt-upload-javascript的源文件)上有一个粗略但有效的示例,该示例使用Google+登录按钮显示上传流程处理OAuth 2(如果您愿意,可以使用常规的OAuth 2浏览器客户端流程)和进度指示器。它还显示了如何在上传后轮询视频处理状态,并在处理后将结果视频嵌入到页面中。
答案 1 :(得分:0)
这是一个已知的issue应该被修复,但实际上并没有修复。基于浏览器的上传方法(仅在V2上可用)不完全支持CORS。您唯一的选择是通过您的服务器代理视频上传(最有可能)或要求用户注册Google帐户并登录以使用V3 API上传视频(不太好)。