1. 程式人生 > 實用技巧 >73.nginx跨域

73.nginx跨域

1.nginx跨域相關的配置:

CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。
CORS需要瀏覽器和伺服器同時支援。目前,所有瀏覽器都支援該功能,IE瀏覽器不能低於IE10。
整個CORS通訊過程,都是瀏覽器自動完成,不需要使用者參與。對於開發者來說,CORS通訊與同源的AJAX通訊沒有差別,程式碼完全
一樣。瀏覽器一旦發現AJAX請求跨源,就會自動新增一些附加的頭資訊,有時還會多出一次附加的請求,但使用者不會有感覺。

Access-Control-Allow-Origin: http://api.bob.com  # 允許訪問的ip白名單
Access-Control-Allow-Credentials: true  # 是否將cookie加入請求中傳送給服務端
Access-Control-Expose-Headers: FooBar  # 附加請求頭資訊
Content-Type: text/html; charset=utf-8  # 字元編碼
    
1)Access-Control-Allow-Origin
該欄位是必須的。它的值要麼是請求時Origin欄位的值,要麼是一個*,表示接受任意域名的請求。

2)Access-Control-Allow-Credentials
該欄位可選。它的值是一個布林值,表示是否允許傳送Cookie。預設情況下,Cookie不包括在CORS請求之中。設為true,
即表示伺服器明確許可,Cookie可以包含在請求中,一起發給伺服器。這個值也只能設為true,如果伺服器不要瀏覽器發
送Cookie,刪除該欄位即可。

3)Access-Control-Expose-Headers
該欄位可選。CORS請求時,XMLHttpRequest物件的getResponseHeader()方法只能拿到6個基本欄位:Cache-Control、
Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿到其他欄位,就必須在
Access-Control-Expose-Headers裡面指定。

上面的例子指定,getResponseHeader('FooBar')可以返回FooBar欄位的值。

參考:

https://blog.csdn.net/java_green_hand0909/article/details/78740765
http://nginx.org/en/docs/http/ngx_http_core_module.html