火绒安全软件

标题: 问题 [打印本页]

作者: www.    时间: 2024-4-10 23:49
标题: 问题
本帖最后由 www. 于 2024-4-10 23:51 编辑

有关于火绒论坛《6.0内测版新功能简介》帖子内视频无法预览播放的问题,发现以下问题线索:

1. 发现火绒论坛在请求相关视频时,响应头Content-Type类型为application/octet-stream,如下图所示:
B70EE88F-9F83-48AF-BF83-0A33A6CEFA0E.jpeg
application/octet-stream指任意类型的二进制流数据,一般下载文件返回的是这种类型,部分浏览器可能会由于无法识别数据类型,所以会直接进行下载。
例如,通常图片资源返回的Content-Type类型是image/png或image/jpeg诸如此类浏览器可以直接识别打开的文件,所以就不会执行下载事件。
查看帖子内html数据后发现,其在<video>标签之间并没有添加type类型,如下图所示:
39132971-5E84-4FCA-B83C-E5C08D19F318.jpeg
音频文件常见type有audio/ogg audio/mpeg audio/wav等,视频文件常见type有video/mp4 video/webm video/ogg等
可以在controls下为同一个资源文件添加多个type尝试:
  1. <source src="{URL}" type="video/mp4" />
  2. <source src="{URL}" type="video/webm" />
  3. <source src="{URL}" type="video/ogg" />
复制代码
参考资料:
https://zhuanlan.zhihu.com/p/379989598
https://cloud.tencent.com/developer/article/2271818
https://blog.csdn.net/weixin_45631278/article/details/124195515
https://www.php.cn/faq/492555.html

2. 火绒论坛不支持HTTP协议的范围请求(HTTP Range Requests),可能会导致Safari浏览器无法正常加载视频文件
范围请求允许客户端请求服务器只发送响应中特定部分的字节范围。服务器在收到请求后,如果支持范围请求,会返回一个状态码为206 Partial Content的响应,并在响应头中包含Content-Range字段,指示响应内容的范围。如果服务器不支持范围请求,它会返回一个状态码为200 OK的响应,并包含完整的实体内容。这种请求通常用于下载工具实现多线程下载,或者在下载大文件时实现断点续传。
Safari浏览器在预览视频文件时,会尝试发送一个Range: bytes=0-1的范围请求,也就是要先请求一个字节的内容,并得到服务器206 Partial Content的响应,然后才会继续访问
这里以支持范围请求的网站为例,抓包GET请求之后Safari浏览器发出的第一个响应信息和服务器返回的响应信息,如下图所示:
1571C4DC-FA7E-4F53-860D-ECD76349B766.jpeg
1E11AD04-7469-4C1C-9136-BD2E309AA771.jpeg
(后续会继续有多个206 Partial Content通信,在后续的通信中,Range: bytes中的值会发生变化)
而在火绒论坛中,当Safari浏览器发出Range: bytes=0-1请求之后,火绒论坛直接返回了200和完整的一整个视频文件,说明并不支持范围请求,如下图所示:
BD8A5DA7-7A8B-497F-AD0F-C986EF642296.jpeg
9515F835-948F-4A4A-8ECD-59569B5293A4.jpeg
参考资料:
https://blog.csdn.net/weixin_43910988/article/details/133765687
https://www.jianshu.com/p/f69e3417a79e
作者: 火绒运营专员    时间: 2024-4-11 08:28
您好,感谢您的反馈,我们确认下
作者: 火绒运营专员    时间: 2024-4-15 13:50
您好,您反馈的论坛问题目前已经提交优化,工程师正在跟进处理中,问题解决后会给您同步信息,您也可以根据ID联系我查询问题处理进展,感谢反馈,【问题ID:49782】




欢迎光临 火绒安全软件 (https://bbs.huorong.cn/) Powered by Discuz! X3.4