跨域資源共用CORS(Cross-Origin Resource Sharing)是一項重要的安全性原則,允許Web應用伺服器進行跨域存取控制,從而實現跨域資料安全傳輸。雲原生API Gateway支援在路由層級配置跨域策略,您可以根據自身需求,只允許必要的網域名稱和要求方法訪問資源,從而防止跨網站請求偽造等安全風險,確保服務的可靠性和安全性。
配置跨域策略
雲原生API Gateway提供了執行個體內和執行個體外兩種配置跨域策略的方式:
執行個體外API
登入雲原生API Gateway控制台。左側導覽列選擇API,並在頂部功能表列選擇地區。
單擊目標API,您可以在下拉框中選擇需要配置跨域策略的執行個體,或者選擇全部執行個體。

選擇路由列表中的目標路由。
執行個體內API
登入雲原生API Gateway控制台。左側導覽列選擇執行個體,並在頂部功能表列選擇地區。
在執行個體頁面,單擊目標網關執行個體ID。左側導覽列選擇API,單擊目標API。
選擇路由列表中的目標路由。
單擊策略配置頁簽,然後單擊入站處理的啟動策略/外掛程式。
單擊跨域卡片,在添加策略: 跨域面板配置相關參數,然後單擊添加。
說明跨域對於Mock服務不生效,請配置一個真實的後端測試服務。
配置項
描述
開啟
開啟開啟右側的開關。
開啟:開啟跨域策略後,您的伺服器資源允許被設定的第三方來源站點通過瀏覽器進行跨域訪問。
關閉:關閉跨域策略後,您的伺服器資源禁止被任意第三方來源站點通過瀏覽器進行跨域訪問。
允許的訪問來源
設定允許通過瀏覽器訪問伺服器資源的網站。參數輸入規則如下:
允許所有的訪問來源:
*。允許指定根網域名稱的訪問來源:
*.example.com。允許多個具體的訪問來源:以
http://或https://開頭,並且以斷行符號分隔。
說明該參數作用於
Access-Control-Allow-Origin頭部。當用戶端請求的Origin頭部匹配上任意您設定的允許的訪問來源,跨域響應的Access-Control-Allow-Origin將會被設定為用戶端請求的Origin頭部。允許的方法
選擇跨域訪問時允許的HTTP方法。常見的方法有GET、POST、PUT、DELETE、HEAD、OPTIONS和PATCH。
說明該參數作用於Access-Control-Allow-Methods頭部。
允許的要求標頭部
除了瀏覽器內建的基礎Header,設定跨域訪問時允許的Header。參數輸入規則如下:
允許所有的要求標頭部:
*。允許多個具體的要求標頭部:輸入具體的要求標頭部,並以斷行符號分隔。
說明該參數作用於Access-Control-Allow-Headers頭部。
允許的回應標頭部
允許瀏覽器、JavaScript指令碼訪問的回應標頭部。參數輸入規則如下:
允許所有的回應標頭部:
*。允許多個具體的回應標頭部:輸入具體的回應標頭部,並以斷行符號分隔。
說明該參數作用於Access-Control-Expose-Headers頭部。
允許攜帶憑證
跨域訪問時是否允許攜帶憑證資訊。
說明該參數作用於Access-Control-Allow-Credentials頭部。
預檢的到期時間
對於非簡單請求,設定OPTIONS預檢請求在瀏覽器的最大緩衝時間。
說明該參數作用於Access-Control-Max-Age頭部。
結果驗證
執行以下測試請求命令:
curl -I -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/list響應結果:
HTTP/1.1 200 OK allow: GET,HEAD,OPTIONS x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-length: 0 date: Tue, 30 Nov 2021 03:20:31 GMT x-envoy-upstream-service-time: 6 access-control-allow-origin: http://example.com access-control-allow-credentials: true access-control-allow-methods: GET,POST,PUT,DELETE,HEAD,OPTIONS access-control-expose-headers: * server: istio-envoy
相關文檔
關於跨域的更多資訊,請參見跨域資源共用(CORS)。