摘要:How to: Handle CORS Preflight Requests in Web API 2
最近在寫 Web API 碰到了 CORS Preflight Request 的問題,
關於 CORS 可以參考這篇文章 HTTP access control (CORS)
終於找到其實在 Web API 2 中, 可以直接在 Controller 中處理 Options, 程式碼如下:
public class YourController : ApiController
{
public HttpResponseMessage Options()
{
HttpContext.Current.Response.Headers.
Set("Access-Control-Allow-Origin", "http://another.doamin");
HttpContext.Current.Response.Headers.
Set("Access-Control-Allow-Methods", "GET, PUT, POST");
return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}
}
至於為什麼可以直接這樣寫呢? 原來在 Web API 專案建立時, 微軟偷偷地幫我們做了些事。
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*." verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>