javascript - 来自 CORS 预检通道的 CORS 标头“Access-Control-Allow-Headers”中缺少令牌
问题描述
后端退货
Access-Control-Allow-Headers: *
我有一个请求
fetch('url-here', {
// ...
headers: {
'X-Auth': token,
}
})
它适用于 Chrome,但对于 Firefox,我得到了
跨域请求被阻止:同源策略不允许读取 <...cut...> 处的远程资源。(原因:CORS 预检通道中的 CORS 标头“Access-Control-Allow-Headers”中缺少令牌“X-Auth”)。[了解更多] 跨域请求被阻止:同源策略不允许在 < 处读取远程资源。 ..切...>。(原因:CORS 请求没有成功)
解决方案
问题是,一些浏览器还不允许*
. Access-Control-Allow-Headers
值得注意的是,Firefox 69 及更早版本没有。请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=1309358。
因此,为了确保您在所有浏览器中获得预期的行为,Access-Control-Allow-Headers
您发回的值应该明确列出您实际需要从前端代码访问的所有标头名称;例如,对于问题中的情况:Access-Control-Allow-Headers: X-Auth
。
无需对所有标头名称进行硬编码即可实现此目的的一种方法是:让您的服务器端代码获取Access-Control-Request-Headers
浏览器发送的请求标头的值,然后将其回显到Access-Control-Allow-Headers
服务器发回的响应标头的值中。
或者使用一些现有的库来启用你的服务器。将Access-Control-Request-Headers
request-header 值回显到Access-Control-Allow-Headers
response-header 值是大多数 CORS 库通常会为您做的事情。
推荐阅读
- java - org.mapstruct 不适用于基类
- d3.js - 根据输入范围更改 CSV 数据源
- typescript - 如何让泛型类型参数本身成为泛型
- spring-boot - 解析类路径时出错:/db/changelog/db.changelog-master.yaml
- java - 映射到 "" 而不是 null Jackson
- arrays - VBA 中的 For 循环,初始化变量
- python - Scipy - 如何使用 Python Scipy Curve Fit 拟合这个 beta 分布
- python - 图像搜索不适用于旋转图像
- c - 使用外部库函数时,用 C 编写的简单 Hello World 不输出任何内容
- python - 在 pyspark 中读取 .parquet.gz 压缩的 parquet 文件