













浏览器发送 OPTIONS 预检请求后,Nginx 返回了 204 响应,且 Access-Control-Allow-Headers 设置为 *,但浏览器仍然报错:
1 | Access to XMLHttpRequest at 'http://.../api/...' |
根据 W3C Fetch Standard 规范:
When credentials mode is “include”(即
Access-Control-Allow-Credentials: true),the following headers must NOT use wildcard*:
Access-Control-Allow-OriginAccess-Control-Allow-HeadersAccess-Control-Allow-Methods
简而言之:Access-Control-Allow-Credentials: true 与通配符 * 互斥。
1 | Access-Control-Allow-Credentials: true ← 要求明确列出允许的值 |
浏览器检测到 credentials 模式下 Allow-Headers 为 *,认为这是一个无效的 CORS 响应,因此拦截了实际请求。
将 Nginx 配置中的通配符替换为显式列举的值:
1 | add_header Access-Control-Allow-Methods "*" always; |
1 | add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD" always; |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。