时间:2023-02-07 19:16:01 | 来源:建站知识
时间:2023-02-07 19:16:01 来源:建站知识
❝ 本文收录于 GitHub 日问: DailyQuestion,内含大厂内推机会、面经大全及若干面试题,每天学习五分钟,一年进入大厂中。
CORS
通过控制 Access-Control-Allow-Origin
控制哪些域名可以共享资源,取值如下Access-Control-Allow-Origin: <origin> | *
其中 *
代表所有域名,origin
代表指定特定域名,那如何设置多个域名了?Origin
来设置响应头 Access-Control-Allow-Origin
」,那 Origin 又是什么东西?Origin
,在浏览器中带 Origin
的逻辑如下Origin
,值为当前域名Origin
Access-Control-Allow-Origin
设置多域名的逻辑也很清晰了Origin
,证明未跨域,则不作任何处理Origin
,证明跨域,根据 Origin
设置相应的 Access-Control-Allow-Origin: <Origin>
// 获取 Origin 请求头const requestOrigin = ctx.get('Origin');// 如果没有,则跳过if (!requestOrigin) { return await next();}// 设置响应头ctx.set('Access-Control-Allow-Origin', requestOrigin)
static.shanyue.tech
的跨域资源foo.shanyue.tech
,响应头中返回 Access-Control-Allow-Origin: foo.shanyue.tech
bar.shanyue.tech
,响应头中返回 Access-Control-Allow-Origin: bar.shanyue.tech
foo.shanyue.tech
,响应头中返回 Access-Control-Allow-Origin: foo.shanyue.tech
,被 CDN 缓存bar.shanyue.tech
,因由缓存,响应头中返回 Access-Control-Allow-Origin: foo.shanyue.tech
,跨域出现问题」Vary: Origin
就上场了,代表为不同的 Origin
缓存不同的资源Origin
来设置响应头 Access-Control-Allow-Origin
」,思路如下Vary: Origin
,避免 CDN 缓存破坏 CORS 配置Origin
,证明未跨域,则不作任何处理Origin
,证明浏览器访问跨域,根据 Origin
设置相应的 Access-Control-Allow-Origin: <Origin>
// 获取 Origin 请求头const requestOrigin = ctx.get('Origin');ctx.set('Vary', 'Origin')// 如果没有,则跳过if (!requestOrigin) { return await next();}// 设置响应头ctx.set('Access-Control-Allow-Origin', requestOrigin)
❝ 相关问题:如何避免 CDN 为 PC 端缓存移动端页面
❞
关键词:设置,试题