nginx静态资源服务配置了Access-Control-Allow-Origin等属性,部分请求还是会出现跨域的问题
程序员文章站
2022-07-10 13:50:52
...
使用nginx做静态资源服务器(离线地图),我已经在nginx配置中加了Access-Control-Allow-Origin头部等配置,如下:
# MapSources Server cesium服务
server {
listen 9602;
server_name 192.168.10.26;
location / {
root F://CesiumData;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
}
部分请求还是会出现跨域的问题。如下图:
解决办法:
来源:https://www.jianshu.com/p/c03d33663cfc
原因该请求的返回码是404,而按照nginx官方文档针对add_header指令的说明,上面的配置,“add_header”指令默认只会给2xx和3xx开头的部分http返回码加上头部,除此返回码之外的其他响应是不会加上对应头部的。
解决办法,nginx文档也已说明,只需要在指令后面加上“always”参数即可。
# MapSources Server cesium服务
server {
listen 9602;
server_name 192.168.10.26;
location / {
root F://CesiumData;
add_header Access-Control-Allow-Origin '*' always;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization' always;
}
}
虽然最后还是会有404错,但是没了那么长一串的报错,感觉舒服多了。