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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章