服務端是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/;
}
以上配置用於開發階段方便,部署服務請需自行斟酌。