使 Sanic 后端支持 CORS

1. 源端消除 Preflight

Preflight(预检请求)是指在跨源发出用户请求前,预先发出一个 OPTIONS 请求,查询服务端是否允许从此源站的请求。

Restful 规范是“罪魁祸首”。因为跨域 fetch 时,application/json 类型的 Content-Type 必然会触发 Preflight。

只有满足简单请求fetch,才不会触发 Preflight:

阅读更多

React + Videojs + Sanic 打造简易流播放器

Html5 的 <video /> 只能在整个视频文件加载完成后才能播放,体验极其不好。如果仅是支持基于 Http(s) 的流媒体播放的话,可以直接利用 Http 协议的 Content-Range 头。

所以本文的核心思想是使 Sanic 后端能正确处理 Videojs 发送的 byte-range 请求,并回以带 Content-Range 的文件流响应即可。

阅读更多

Sanic 还不错

简单横向比较了 Sanic、Flask、FastAPI 之后,决定以后还是优先学 Sanic 吧。

Sanic 在同类评测里名列前茅。异步架构有先天的性能优势,Flask 甚至才认识到这点,好像又显得不那么重视。最新发布的 2.x 版本里的异步支持形同鸡肋,不支持 ASGI,不支持后台任务,Websocket 也同样不能支持。

阅读更多