Nginx配置CORS后前端还是报跨域错误怎么办?
我在本地用React调后端API,后端部署在另一台服务器上。已经在Nginx里加了CORS头,但浏览器还是报跨域错误,不知道哪里没配对。
这是我的请求代码:
fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ key: 'value' })
})
.then(res => res.json())
.then(data => console.log(data));
Chrome控制台显示:Access to fetch at ‘https://api.example.com/data’ from origin ‘http://localhost:3000’ has been blocked by CORS policy… 看起来预检请求都没过,是不是Nginx漏了什么配置?
先确认你的Nginx配置里是不是少了这些关键项:
注意几个要点:
1. 必须单独处理OPTIONS方法
2. 允许的Origin要明确写出来,不能直接写*
3. 允许的Headers要包含你JS里面实际发送的header(这里是Content-Type)
另外检查下你fetch请求是不是没加credentials配置。如果是带cookie的请求,Nginx还要加:
add_header 'Access-Control-Allow-Credentials' 'true';JS里面fetch要加:
credentials: 'include'配完记得
nginx -t测试配置,nginx -s reload重载。