nginx跨域详解,自定义Headers

服务端是C#,我也不懂我也不会,SpringBoot是可以配置跨域的。

其实跨域这个问题就是浏览器的一种保护机制,当你设置请求头以后可以跳过这种机制。所以服务端与服务端访问是不存在跨域的,例如 NGINX 访问 接口服务器

跨域分两种:简单跨域,复杂跨域。

简单跨域:一次请求。配置#跨域设置即可

复杂跨域:两次请求,首先请求确定头信息是否允许,请求方式OPTIONS,我们要做的就是捕获第一次OPTIONS请求返回200code状态码,浏览器会发送第二次数据访问请求。

为什么会产生两种跨域情况?

复杂跨域:这里我配置复杂跨域是由于服务端需要自定义传入Headers,token。

具体简单和复杂跨域的产生可自行搜索。

所以我就采用nginx 配置跨域访问

location /v2/ {	
            #解决自定义header,复杂跨域请求
			if ($request_method = 'OPTIONS') {
			   add_header Access-Control-Allow-Origin *;
			   add_header Access-Control-Max-Age 1728000;
			   add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
			   add_header Access-Control-Allow-Headers 'token';
			   add_header Content-Type 'application/json; charset=utf-8';
			   add_header Content-Length 0 ;
			   return 200;
			}
		
		    #跨域设置
			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,token';
           
            #代理访问地址
             proxy_pass http://localhost:8031/;
        }

以上配置用于开发阶段方便,部署服务请需自行斟酌。

 

发布了26 篇原创文章 · 获赞 1 · 访问量 6014
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章