设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 18060|回复: 2

kangle网站ajax跨域请求Access-Control-Allow-Origin根据浏览器请求头Sec-Fetch-Mode=cors来进行添加的方案,do oss cdn,HTTP协议之Origin头部,dash m4s mpd加载失败,cache缓存错误共用

[复制链接]
 成长值: 342

签到天数: 4739 天

[LV.Master]伴坛终老

发表于 2019/9/27 20:59 | 显示全部楼层 |阅读模式 |Google Chrome 77.0.3865.90|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
kangle网站ajax跨域请求Access-Control-Allow-Origin根据浏览器请求头Sec-Fetch-Mode=cors来进行添加的方案,do oss cdn,HTTP协议之Origin头部,dash m4s mpd加载失败,cache缓存错误共用

1.png

跨域可以优化,比如说请求头有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,如下参考代码
  1. 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下不管是什么请求都会返回
  1. 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等文件格式
1.png

参考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使用不同缓存
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

签到天数: 1167 天

[LV.10]以坛为家III

发表于 2019/9/27 21:07 | 显示全部楼层 |Google Chrome 77.0.3865.90|Windows 10
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

签到天数: 49 天

[LV.5]常住居民I

发表于 2019/10/23 13:26 | 显示全部楼层 |Google Chrome 77.0.3865.120|Windows 7
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/12/25 10:27 , Processed in 0.129924 second(s), 22 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表