Cross-origin resource sharing(CORS)
Cross-origin resource sharing (跨來源資源分享,以下稱CORS)是W3C 提案的技術標準,定義伺服器與用瀏覽器在跨來源(即cross domain,跨網域)呼叫時的互動方式。CORS標準允許網頁發出跨網域的AJAX請求,讓實作了同源策略(same-origin)的瀏覽器在安全條件下去呼叫進行有限制的跨網域AJAX請求。
CORS透過設定HTTP Header(標頭)設置那些網域的網站可以跨網域存取,目前W3C定義九個Response Header(回應標頭)可以設置:
| Response Header | 說明 |
|---|---|
| Access-Control-Allow-Origin | 指示是否基於共享資源透過回傳來源請求標頭、“*”或“null”在回應裡。 |
| Access-Control-Allow-Credentials | 指示當省略憑證標誌(Credentials flag)未設置時,是否公開請求的回應。當檢查請求(preflight request)的回應一部分,它表明實際的請求可以包含用戶端憑證。 |
| Access-Control-Expose-Headers | 指示那些標頭是安全公開在CORS API規範的API。 |
| Access-Control-Max-Age | 指示檢查請求可以快取多久時間在快取結果裡。 |
| Access-Control-Allow-Methods | 指示實際請求期間,可以使用那些方法做為請求回應的一部分。 |
| Access-Control-Allow-Headers | 指示實際請求期間,可以使用那些標頭名稱做為請求回應的一部分。 |
| Origin | 指示跨來源請求或檢查請求來自於。 |
| Access-Control-Request-Method | 指示那種方法在實際請求中做為檢查請求的一部分。 |
| Access-Control-Request-Headers | 指示那種標頭在實際請求中做為檢查請求的一部分。 |
例如,我們可以設置以下CORS標頭:
Access-Control-Allow-Origin: http://kkbruce.net Access-Control-Allow-Methods: PUT, DELETE
這表示,除了網站本身以外,還允許kkbruce.net網域進行跨網域的AJAX請求且只允許PUT和DELETE方法的請求。允許的網域可以設定多組,也能設定為“*”代表不設限。

