当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource,需要给Nginx服务器配置响应的header参数:
时间: 2024-08-27 15:00:50 浏览: 53
Nginx跨域设置Access-Control-Allow-Origin无效的解决办法
当遇到 "403 Forbidden" 跨域错误,特别是提示"No 'Access-Control-Allow-Origin' header is present on the requested resource",这通常意味着服务器不允许来自特定源的请求。`Access-Control-Allow-Origin` 是HTTP头部字段,用于控制浏览器是否允许该资源的请求头中包含的 `Origin` 字段(即发送请求的页面地址)。如果你的Nginx服务器作为API服务端,你需要在响应头中设置这个字段。
为了解决这个问题,你需要在Nginx的server块或location块中添加以下配置:
```nginx
add_header Access-Control-Allow-Origin *; # 允许所有来源
# 或者指定具体的源
add_header Access-Control-Allow-Origin http://your-domain.com;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; # 允许的HTTP方法
add_header Access-Control-Allow-Headers 'Content-Type, Authorization'; # 允许的请求头
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000; # 预检请求有效期(秒)
add_header 'Content-Length' 0;
return 204;
}
```
这里的`*`表示任意源,如果你需要限制到特定域名,可以替换为实际的域名。对于预检请求(Preflight Request,通常使用`OPTIONS`方法),会先发一个询问是否允许访问的请求,Nginx通过检查这部分配置来回应。
阅读全文