kangle网站ajax跨域请求Access-Control-Allow-Origin根据浏览器请求头Sec-Fetch-Mode=cors来进行添加的方案,do oss cdn,HTTP协议之Origin头部,dash m4s mpd加载失败,cache缓存错误共用
kangle网站ajax跨域请求Access-Control-Allow-Origin根据浏览器请求头Sec-Fetch-Mode=cors来进行添加的方案,do oss cdn,HTTP协议之Origin头部,dash m4s mpd加载失败,cache缓存错误共用跨域可以优化,比如说请求头有Sec-Fetch-Mode=cors,才执行添加Access-Control-Allow-Origin=*
收到no-cors或者没有这个请求头,则不添加
但是有个问题,,这样设置不知道缓存会不会被hit共用。得有时间测一下
这样看起来也更智能一点,还可以做到来节省头字节流量
2019年12月10日00:45:26
补充,目前3.5.18.1版本,发现缓存是公用的
比如说测试Sec-Fetch-Mode,,发现还是没有收到服务器头部,后来发现,是要用Origin,如下参考代码
curl -v -I -H "Origin: https://poi3.com" https://poi.nyc3.cdn.digitaloceanspaces.com/post/videos/001/069/zdjV3_dash/vod.mpd
GET请求模式,通过测试head请求的话,源站是不会返回跨域回应头数据的,CDN下不管是什么请求都会返回
wget -S --header="Origin: https://poi3.com" https://poi.nyc3.cdn.digitaloceanspaces.com/post/videos/001/069/zdjV3_dash/vod.mpd
跨域请求会有
Origin: https://poi3.com
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
浏览器新标签请求为
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
非跨域请求为
sec-fetch-mode: no-cors
sec-fetch-site: cross-site
后来,发现do oss cdn最重要的是Origin头部来判断,而不是Sec-Fetch-Mode
如果直接oss源,只有GET请求才会返回,比如curl的HEAD请求源站就没有返回结果
CDN的话,会返回所有有Origin头部头部请求的跨域
kangle直接反代oss源站或者CDN的情况,,,可能收到某些浏览器直接访问文件,然后产生了一个缓存异常错误结果
导致正常播放器跨域输出缓存的内容,缓存了没有Access-Control-Allow-Origin回应的头部,就产生了无法播放的问题
直接在kangle上屏蔽没有Origin请求头就拒绝访问,或者Sec-Fetch-Mode内容不为cors则拒绝是目前是解决方案
图片仅供参考,dash还会有m4s等文件格式
参考HTTP协议:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin
参考网上一大堆这种问题:https://zhuanlan.zhihu.com/p/38972475
这个Vary:Origin不知道有什么用:https://cloud.tencent.com/developer/ask/104409
https://stackoverflow.com/questions/25329405/why-isnt-vary-origin-response-set-on-a-cors-miss
2019年12月15日22:43:27
kangle 更新 3.5.18.5,支持Vary:Origin响应不同缓存
但是如果首次访问了没有Vary:Origin的响应头部后,会缓存导致后续直接响应url
目前没有判断Origin请求头部,官方让我去试试nginx
就是按照vary标准实现的,,一定要对方有响应,难道要我去肛一波所有的oss厂商?
2019年12月17日22:05:41
更新 3.5.18.6,增加回应控制vary标记模块,可以针对任意值用户请求头部采用不同缓存,并且支持响应为空的情况为同一url使用不同缓存 {:2993:} {:2537:}
页:
[1]