跨域資源共享 (CORS) 為 W3C 標準,允許伺服器宣告允許哪些來源 (Origin) 進行跨域 AJAX 呼叫,打破瀏覽器同源策略限制。Web API 2 內建完整支援。

Origin、Access-Control-Request-Method、Access-Control-Request-HeadersAccess-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Allow-Credentials、Access-Control-Max-Age符合條件:GET/POST、Content-Type 為 application/x-www-form-urlencoded、multipart/form-data、text/plain、無自訂標頭。瀏覽器直接發送請求攜帶 Origin,伺服器回應 Access-Control-Allow-Origin 即可。
不符合簡單請求條件時,瀏覽器先發送 OPTIONS 預檢請求,伺服器通過後才發送真實請求。可透過 Access-Control-Max-Age 快取預檢結果提升效能。
// WebApiConfig.cs
public static class WebApiConfig {
public static void Register(HttpConfiguration config) {
var cors = new EnableCorsAttribute("https://allowed-domain.com", "*", "*");
config.EnableCors(cors);
// 或針對特定 Controller/Action 套用 [EnableCors] 屬性
}
}
Access-Control-Allow-OriginAllow-Origin 不能為 "*"