必须同时配置前后端:前端用fetch显式设置headers并确保mode:'cors',后端需在options响应中返回access-control-allow-headers包含自定义头。

在 JavaScript 中发起 CORS 请求时,若需添加自定义请求头(如 X-Auth-Token、X-Request-ID),必须同时满足前端与后端两方面的配置要求,否则浏览器会直接拦截请求或返回 403/0 状态错误。
前端:使用 fetch 或 XMLHttpRequest 显式设置 header
默认情况下,浏览器只允许发送有限的“安全首部字段”(如 Accept、Content-Type、Authorization)。一旦设置了非标准字段(如 X-My-Custom-Header),浏览器会先发一个 预检请求(OPTIONS),确认服务端是否允许该字段。
因此,你需要:
- 确保使用
fetch时传入{ headers: {...}, mode: 'cors' }(mode: 'cors'是默认值,但显式写出更清晰); - 避免在
Content-Type中使用非简单值(如application/json是允许的,但application/vnd.api+json会触发预检); - 如果需要带凭证(如 cookies 或 Authorization),还需加上
credentials: 'include',且后端Access-Control-Allow-Origin不能为*。
示例:
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Auth-Token': 'abc123',
'X-Request-ID': 'req-789'
},
credentials: 'include',
body: JSON.stringify({ msg: 'hello' })
});
后端:必须响应预检请求并声明允许的自定义 header
当浏览器发送 OPTIONS 预检请求时,服务端必须正确响应以下关键 header:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Access-Control-Allow-Origin:指定允许的源(不能是*,如果前端带 credentials); -
Access-Control-Allow-Headers:明确列出所有允许的自定义请求头,例如X-Auth-Token, X-Request-ID; -
Access-Control-Allow-Methods:如GET, POST, PUT, DELETE; -
Access-Control-Allow-Credentials:若前端设了credentials: 'include',此项必须为true; - 对 OPTIONS 请求,响应体可为空,状态码应为 200 或 204。
常见错误:后端只写了 Access-Control-Allow-Origin: *,却没配 Access-Control-Allow-Headers,导致预检失败,浏览器控制台报错 “Request header field X-Auth-Token is not allowed by Access-Control-Allow-Headers”。
注意:有些 header 永远不能被自定义(浏览器强制限制)
以下请求头字段由浏览器控制,JavaScript 无法通过 headers 设置(即使写了也会被忽略或报错):
Accept-CharsetAccept-EncodingConnection-
Content-Length(fetch会自动计算) -
Cookie(需靠credentials控制,不可手动设) -
Host、Referer、User-Agent等
如果你试图设置这些字段,fetch 会抛出 TypeError,提示 “Forbidden header name”。
调试建议:看 Network 面板中的 OPTIONS 请求
遇到跨域 header 失败时,打开浏览器开发者工具的 Network 标签页,筛选 OPTIONS 类型请求:
- 检查其响应状态是否为 200/204;
- 确认响应头中是否包含正确的
Access-Control-Allow-Headers值; - 比对请求头中的自定义字段名是否与响应头中声明的完全一致(大小写敏感);
- 留意控制台报错信息,它通常会直接指出哪个 header 不被允许。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










