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

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

你可能感兴趣的:(nginx)