Access-Control-Allow-Headers通配符foo-*是否允许foo-1、foo-2请求头?
关于CORS通配符在
Access-Control-Allow-Headers中的使用 问题1:设置Access-Control-Allow-Headers: foo-*时,foo-1和foo-2请求头会被允许吗?
当然可以。CORS规范支持在Access-Control-Allow-Headers中使用后缀通配符*,只要请求头的前缀和指定字符串完全匹配,就会被放行。foo-1和foo-2都以foo-开头,完全符合规则,浏览器不会因为这两个头触发CORS拦截。
问题2:用Access-Control-Allow-Headers: x-company-*代替逐一列出x-company-1、x-company-2,能覆盖未来所有符合x-company-*规则的请求头吗?
绝对可以。这种通配符写法就是为了解决“需要允许一批同前缀自定义头”的场景,扩展性拉满。以后不管新增x-company-department、x-company-team还是其他任何以x-company-开头的请求头,都不需要修改CORS配置,直接就能被允许。
需要注意两个细节:
- 通配符只能放在后缀位置,
*-company这种前缀通配的写法不被CORS规范支持,完全无效。 - 如果需要同时允许标准头和自定义前缀头,可以把两者写在一起,比如
Access-Control-Allow-Headers: x-company-*, Content-Type, Authorization,这样两类头都会被放行。
内容的提问来源于stack exchange,提问作者Alex Agranov
相关产品推荐
相关产品推荐

