CORS飞行前响应实际上是如何缓存在浏览器中的?
这是一个高度技术性的问题,可能只有了解浏览器内部结构的人才能回答 浏览器缓存CORS飞行前响应的具体方式(假设在对选项飞行前请求的响应中返回了Access Control Max Age响应头) 基本上,在spec()中,它表示飞行前结果缓存中的每个条目都包含以下字段:CORS飞行前响应实际上是如何缓存在浏览器中的?,cors,Cors,这是一个高度技术性的问题,可能只有了解浏览器内部结构的人才能回答 浏览器缓存CORS飞行前响应的具体方式(假设在对选项飞行前请求的响应中返回了Access Control Max Age响应头) 基本上,在spec()中,它表示飞行前结果缓存中的每个条目都包含以下字段: 起源 网址 最大年龄 证书 方法 标题 (方法和头是互斥的) 主缓存密钥由除“最大年龄”之外的所有字段组成 因此,如果我收到对选项飞行前请求的响应,其中包含以下内容: Access-Control-Allow-Origin:
- 起源
- 网址
- 最大年龄
- 证书
- 方法
- 标题
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, OPTION, HEAD
Access-Control-Allow-Headers: x-cool, x-special, x-sweet
Access-Control-Max-Age: 3600
那么,我认为这会导致所有以下条目被添加到飞行前缓存中,对吗
http://www.example.com <url> 3600 true GET
http://www.example.com <url> 3600 true POST
http://www.example.com <url> 3600 true OPTIONS
http://www.example.com <url> 3600 true HEAD
http://www.example.com <url> 3600 true x-cool
http://www.example.com <url> 3600 true x-special
http://www.example.com <url> 3600 true x-sweet
http://www.example.com 3600真人秀
http://www.example.com 3600真柱
http://www.example.com 3600个真实选项
http://www.example.com 3600真头
http://www.example.com 3600真x-酷
http://www.example.com 3600真x-special
http://www.example.com 3600真x-甜
我的问题是:
一种可能的解决方法是收集所有的头键,并在Access Control Expose header中返回这些头键。执行Access Control Allow header非常简单(因为我可以镜像回Access Control Request Headers值,从而允许在请求中传递的所有头)。然而,要返回访问控制暴露头,我需要知道GET可能返回的所有可能的响应头。如果处理GET的代码与返回选项响应的代码相同,那么没关系,但这意味着我不能使用中间代理(例如CDN或负载平衡器)来返回它们,因为它们不知道响应头可能是什么