解决 has been blocked by CORS policy: Request header field token is not allowed by Access-Control-Allow-Headers in preflight response.
时间: 2024-12-23 08:09:10 浏览: 122
当遇到 "has been blocked by CORS policy: Request header field <token> is not allowed by Access-Control-Allow-Headers in preflight response" 这样的错误时,你正在尝试从一个源(通常是跨域的)发送一个包含头信息(如 `token`)的请求到另一个源,但目标服务器的CORS策略不允许这个特定的头部字段。
CORS (Cross-Origin Resource Sharing) 是一种安全策略,用于控制浏览器如何处理来自不同源的HTTP请求。在这个错误中,"preflight request" 是一个OPTIONS请求,用于检查实际请求是否会被允许。如果预检请求返回的响应中不包含 `Access-Control-Allow-Headers` 字段,或者指定的 `token` 没有包括在内,浏览器就会拒绝后续的POST、PUT等实际请求。
解决这个问题通常需要服务器端配置:
1. **修改服务器响应**:确保在响应头中包含 `Access-Control-Allow-Headers`,并添加允许的头部字段,比如 `Content-Type` 和 `Authorization` 包括你在请求中使用的 `token`。
```json
Access-Control-Allow-Headers: 'Content-Type, Authorization, token'
```
2. **添加必要的CORS策略规则**:如果你是使用像Node.js的CORS中间件,确保它们正确地设置了允许的头信息。
3. **如果允许所有来源**,可以设置 `Access-Control-Allow-Origin` 为 `*`,但这通常不是最佳实践,因为它会暴露过多的信息给任意来源。
4. **在同源环境**下解决问题:如果可行,将数据交换的两端放在相同的域名下,避免CORS限制。
记得每次更改后都需要测试预检请求是否成功,并查看服务器日志确认配置已生效。
阅读全文
相关推荐









