internet-explorer – IE 10 Apache / Linux HTTP / 1.0 412前提条件失败video.js加载mp4视频

当我们有这样的组合时,我们有一个有趣的问题:

IE 10(有时也是IE 9)
Apache 2.2 / Linux(RH EL 6.3)运行https
video.js播放器
mp4视频文件

当我们有这些组合时,视频播放器会显示旋转图标.

当我们检查http标头时,我们看到:
请求:

GET /tmp/Question123.mp4 HTTP/1.1
Accept */*
If-Unmodified-Since Thu, 11 Jul 2013 19:49:44 GMT
If-Match W/"a074e-50228d-4e141b21b6cfb" 
Range bytes=49152-5251724
User-Agent Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0; MALC)
GetContentFeatures.DLNA.ORG 1
Pragma getIfoFileURI.dlna.org
Accept-Language en-US
Accept-Encoding gzip, deflate
Host: mysite.com
Connection Keep-Alive

响应:

HTTP/1.0 412 Precondition Failed 

在IE 8上它似乎使用闪存,所以我们有一个不同的路径,它的工作原理.
在Firefox / Chrome / Safari上,一切正常.

我们可以看到的唯一可能导致这种情况的是:
Firefox使用:

If-Modified-Since   Thu, 11 Jul 2013 19:58:37 GMT
If-None-Match   "a074e-50228d-4e141d1edc1b6"

这些是不同的请求标头.

有任何想法吗?

谢谢
乔尔

最佳答案 问题是由这些请求标头引起的:

If-Unmodified-Since Thu, 11 Jul 2013 19:49:44 GMT
If-Match W/"a074e-50228d-4e141b21b6cfb" 

服务器说“不,我当前的资源版本不符合这些标准,所以我会返回一个HTTP / 412响应让你知道.”

这些标题是因为客户端正在发出HTTP RANGE请求(仅询问文件的一部分),因此需要确保从服务器返回的文件部分来自同一版本的文件.它已经有了一部分.

原始响应中的HTTP响应标头是什么?响应中的ETAG标头是否正确包含其值的引号?是否只有一台服务器,或者您是否跨多个服务器负载均衡请求?

点赞