1.什麼是跨越
跨域是指a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、端口、子域名不同,所進行的訪問行動都是跨域的,而瀏覽器爲了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。
例如:A網站部署在:http://localhost:81 即本地ip端口81上;B網站部署在:http://localhost:82 即本地ip端口82上。現在A網站的頁面想去訪問B網站的信息,即爲跨越訪問。在前後端部署在不同端口上比較常見。
2.方式一:配置option請求
location / {
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'; # 如果有自定義head,需要添加在此處
if ($request_method = 'OPTIONS') {
return 204;
}
}
配置option請求後,會發現瀏覽器請求信息裏有兩條請求。因爲當跨域獲取資源時,瀏覽會出於安全的考慮會先使用OPTIONS做請求,看能否正常返回,通過返回204允許後續請求。
3.方式二:配置在同一個端口
後端可以和前端部署在同一個端口,比如後端就添加一個/api目錄。通過/api請求方式訪問。