我有一个常规的YouTube浏览器上传表单,如下所示。它在IE,Chrome和Firefox的较旧版本中效果很好。但是,我的Firefox 16.0.2只是挂在帖子上。我已经在使用Firefox 16.x的其他计算机上复制了该问题。
如果我通过以下方式将YouTube的URL手动覆盖SSL,则文件可以正确上传: https ://uploads.gdata.youtube.com > http ://uploads.gdata.youtube.com 。
为了使事情变得陌生,该请求根本没有在firebug的 net 标签上记录。在Firefox的 Web控制台上,我可以看到该请求,但是完全缺少响应和状态代码。然后,如果我将提示器与解密HTTPS流量选项启用了正确的文件上传。
任何人都有任何想法,如果没有解决问题,可能会发生什么或如何监视SSL流量?
<!DOCTYPE html>
<html>
<head><title>YouTube Test</title></head>
<body>
<form id="frmYouTube" enctype="multipart/form-data" method="post" action="https://uploads.gdata.youtube.com/action/FormDataUpload/YOU_TUBE_URL?nexturl=https%3a%2f%2fMY.DOMAIN.COM%2fDIR_1%2fDIR_2%3fid2%3dLOCAL_ID">
<table>
<tr><td><input type="file" name="file" /></td></tr>
<tr><td>
<input type="hidden" name="token" value="MY_YOUTUBE_TOKEN" />
<input type="submit" value="Upload" />
</td></tr>
</table>
</form>
</body>
</html>
使用Google.gdata.youtube库在后端生成YouTube URL和令牌。这是该代码的一部分:
public class BaseModel
{
public string SITE_YOUTUBE_APP_NAME = "";
public string SITE_YOUTUBE_DEV_KEY = "";
public string SITE_YOUTUBE_USERNAME = "";
public string SITE_YOUTUBE_PASSWORD = "";
public string YOUTUBE_CATEGORY = "";
public FormUploadToken FormToken;
public void Load()
{
YouTubeRequestSettings settings = new YouTubeRequestSettings(
SITE_YOUTUBE_APP_NAME, SITE_YOUTUBE_DEV_KEY,
SITE_YOUTUBE_USERNAME, SITE_YOUTUBE_PASSWORD);
YouTubeRequest request = new YouTubeRequest(settings);
Video newVideo = new Video();
string title = "Test Title";
string description = "Test Description";
newVideo.Title = title;
newVideo.Tags.Add(new MediaCategory(YOUTUBE_CATEGORY, YouTubeNameTable.CategorySchema));
newVideo.Keywords = "test";
newVideo.Description = description;
newVideo.YouTubeEntry.Private = false;
FormToken = request.CreateFormUploadToken(newVideo);
}
}
来自我的测试YouTube浏览器上传的上传非常气质,有时它在大多数情况下都起作用(1-5%的机会),我只是使用54.243.53.37上传了视频/Home/index在Windows 7上使用Firefox 16,但我知道大多数时候它不会初始化。
但是,禁用防火墙会增加上载成功上传的机会。不知道为什么这是这样的(当然可能是幸运的观察)。
由于现在可以使用Firefox 17,并且Google不能完全支持Firefox 16的此功能,因此我添加了Firefox 16的用户的警告,以升级到Firefox 17或使用其他浏览器。并不理想,但这是唯一一个合理的解决方案,因为在Firefox 16中未能成功的测试用户数量。