我使用<video>
标签来播放视频,代码大致如下:
<video preload="metadata" controls type="video/mp4" src="//example.com/hi.mp4">
你的浏览器不支持 <code>video</code> 标签.
</video>
我知道这部分是迅雷的问题,可以设置迅雷的响应对象。但不是所有用户都会设置这个的。
更多的时候,用户只会觉得奇怪,为什么打开这个网页后,迅雷会自动下载这个网页内的视频?
我猜想阿里云的 OSS 返回的header
里可能表明了这是个附件,然后触发了迅雷的响应机制,但Response Header
也没发现有什么异常的:
HTTP/1.1 206 Partial Content
Server: Tengine
Content-Type: application/octet-stream
Content-Length: 130820554
Connection: keep-alive
Date: Mon, 21 Nov 2016 04:49:40 GMT
x-oss-request-id: 58327CE4E4B256C124C4743A
Accept-Ranges: bytes
ETag: "8633B7D2064AE81BB7FE2A689AC6C8C9-25"
Last-Modified: Wed, 16 Nov 2016 09:36:27 GMT
x-oss-object-type: Multipart
x-oss-hash-crc64ecma: 10209195106474082101
x-oss-server-time: 31
Via: cache18.l2eu6[0,304-0,H], cache2.l2eu6[1,0], cache5.cn466[0,206-0,H], cache10.cn466[5,0]
Age: 1057
X-Cache: HIT TCP_MEM_HIT dirn:16:347220947
X-Swift-SaveTime: Mon, 21 Nov 2016 04:52:08 GMT
X-Swift-CacheTime: 3600
Content-Range: bytes 0-130820553/130820554
Timing-Allow-Origin: *
EagleId: 73e791d214797048374984367e
顺便附上Request Header
:
GET /hi.mp4 HTTP/1.1
Host: example.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36
Accept: */*
DNT: 1
Referer: http://localhost:3000/
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
Range: bytes=0-
请问应当如何改写代码,才能避免迅雷自动下载视频?
这个问题是因为阿里云OSS对于mp4格式的文件Response Header中的Content-Type默认为application/octet-stream所导致的,解决办法就是在阿里云OSS中设置Response Header中的值,把Content-Type修改为video/mp4即可,可以多选然后批量修改。