有關於WEB API CORS的一些規定
因為每次只要遇到cors的問題,就要去google查語法,還有哪些地方得設定,乾脆自己寫一篇來備忘,也把一些設定方式記錄下來,以備自己未來可以快速的檢視
首先我們需要先到nuget上面搜尋cors的元件,然後安裝,因為我已安裝所以已經打勾
接著我們必須在WebApiConfig.cs加上config.EnableCors();
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var cors = new EnableCorsAttribute("*", "*", "*")
{
SupportsCredentials = true
};
config.EnableCors(cors);
}
}
或者有一種做法是直接在web.config加上這段語法
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:49595" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
<add name="Access-Control-Allow-Headers" value="*" />
</customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:49595" />
這句是設定你的client本機位址,也就是說只有這個網址可以跨網站存取資源
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
這句是設定可以存取的請求方法
<add name="Access-Control-Allow-Headers" value="*" />
這句則是可以存取的head
但是我們也可以更詳細的設定每個controller各自的限制
或者是設定各自action的控制
最後我們還可以設定哪個action是不可以跨網站存取的
以上希望對各位有幫助,有問題的話再請提出討論。