我在Safari中遇到了一个奇怪的错误,当我通过PHP为MP4视频提供服务时(使用基于令牌的方式对文档根目录下的文件进行模糊处理认证系统),Safari出于某种原因触发了<video>'s
onerror事件,并且视频从未加载(我无法从发送给onerror的事件对象中获取任何有用的信息 - 所有内容都未定义)。无法在Safari/Mac上通过PHP提供HTML5视频(5.0)
当我直接访问PHP脚本(即,视频未嵌入页面中)时,视频控件会在瞬间出现,然后闪烁到QuickTime问号。
当我直接访问MP4文件时,它按预期工作。
奇怪的是,嵌入式视频在最新版本的Chrome for Mac中完美运行。
这里是头通过PHP访问时:
Connection:Keep-Alive
Content-Disposition:inline; filename="test.mp4"
Content-Length:5558749
Content-Type:video/mp4
Date:Tue, 22 Jun 2010 01:24:25 GMT
Keep-Alive:timeout=10, max=29
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
X-Powered-By:PHP/5.2.13
这里是头时test.mp4直接访问:
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:5558749
Content-Type:video/mp4
Date:Tue, 22 Jun 2010 01:26:45 GMT
Etag:"1c04757-54d1dd-489944c5a6400"
Keep-Alive:timeout=10, max=30
Last-Modified:Tue, 22 Jun 2010 01:25:36 GMT
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
唯一不同的标题是:接受-范围(我认为这是不必要的),Etag,Last-Modified,Content-Disposition和X-Powered-By。
Chrome不仅可以处理PHP提供的视频,而且当我使用相同的脚本通过Flash播放器加载MP4时,它也可以正常工作。我无法弄清楚Safari是如何窒息的。
编辑:此外,当我更改内容处置为“附件”时,Safari将下载MP4文件就好了。
我发现这很好。谢谢。同样的问题似乎发生在当前版本的Firefox 27和Win 7上的IE 11上。在Chrome 32上工作时。 – Haprog 2014-02-19 14:51:22
那么解决方案是什么? – Geo 2014-03-17 18:50:01
@Geo我想我最终使用查询字符串来存储状态,因为你不能使用'$ _COOKIE' /'$ _SESSION'。 – JKS 2014-03-18 22:58:14