使 Sanic 后端支持 CORS
1. 源端消除 Preflight
Preflight(预检请求)是指在跨源发出用户请求前,预先发出一个 OPTIONS 请求,查询服务端是否允许从此源站的请求。
Restful 规范是“罪魁祸首”。因为跨域 fetch
时,application/json
类型的 Content-Type
必然会触发 Preflight。
只有满足简单请求的 fetch
,才不会触发 Preflight:
Preflight(预检请求)是指在跨源发出用户请求前,预先发出一个 OPTIONS 请求,查询服务端是否允许从此源站的请求。
Restful 规范是“罪魁祸首”。因为跨域 fetch
时,application/json
类型的 Content-Type
必然会触发 Preflight。
只有满足简单请求的 fetch
,才不会触发 Preflight:
Html5 的 <video />
只能在整个视频文件加载完成后才能播放,体验极其不好。如果仅是支持基于 Http(s) 的流媒体播放的话,可以直接利用 Http 协议的 Content-Range 头。
所以本文的核心思想是使 Sanic 后端能正确处理 Videojs 发送的 byte-range 请求,并回以带 Content-Range 的文件流响应即可。