欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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';
		}
    }

部分请求还是会出现跨域的问题。如下图:

nginx静态资源服务配置了Access-Control-Allow-Origin等属性,部分请求还是会出现跨域的问题

解决办法:

来源: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错,但是没了那么长一串的报错,感觉舒服多了。

nginx静态资源服务配置了Access-Control-Allow-Origin等属性,部分请求还是会出现跨域的问题