NO IMAGE

由於瀏覽器的安全限制,前端js程式碼無法直接訪問不同域下的資源。只要協議、域名、埠有任何一個不同,都被當作是不同的域。

跨域的解決方案有很多,目前常用的方案是通過nginx代理伺服器給返回的響應頭新增cors跨域配置項來解決。

在此對nginx配置add_header進行說明:

格式:add_header name value [always];
name是新增的頭名稱,value是對應的值,always可選(下面會詳細說明)

在不新增always的情況下,add_header只對響應碼為200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 308 (1.13.0)這些生效(括號內是nginx版本)。也就是說當服務端返回響應異常,響應碼不是上述之一的話,即使nginx有配跨域頭資訊,瀏覽器仍然會顯示跨域錯誤。原因就是因為nginx對異常響應碼新增add_header無效。

實際工作中往往前端需要捕獲服務端異常響應,這時在nginx跨域add_header上加上always,使nginx對任何響應碼生效。

具體請參考nginx官方文件