[WEB API] 有關於CORS的一些寫法和設定

有關於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加上這段語法

Image 6

<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各自的限制

 

Image 7

或者是設定各自action的控制

Image 8

最後我們還可以設定哪個action是不可以跨網站存取的

Image 9

 

以上希望對各位有幫助,有問題的話再請提出討論。