1. 程式人生 > >System.Web.Http.Cors配置跨域訪問的兩種方式

System.Web.Http.Cors配置跨域訪問的兩種方式

在webapi中使用System.Web.Http.Cors配置跨域資訊可以有兩種方式。
  一種是在App_Start.WebApiConfig.cs的Register中配置如下程式碼,這種方式將在所有的webapi Controller裡面起作用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web.Http.Cors;

namespace YDTG.Service
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服務

        // Web API 路由
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        //這是重點,從配置檔案的appsettings節點中讀取跨域的地址
        var cors = new EnableCorsAttribute(ConfigurationManager.AppSettings["origins"], "*", "*");
        config.EnableCors(cors);
    }
}

}

配置檔案如下,注意一定要加上http

1   第二種方式就是在每個webapiController類中設定,即每個控制器個性化配置,如下程式碼。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Cors;
using System.Web.Mvc;

namespace Service.Controllers
{
[EnableCors(“http://localhost:9012,http://192.168.1.108:9012

”, “", "”)]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Title = “Home Page”;
return View();
}
}
}

注意事項

EnableCors共三個引數分別為origins、headers和methods。

origins配置允許訪問的域名,多個域名以逗號分隔即可,域名一定要完整,如果是ip地址前面要加上“http”,只使用IP的話一定會失效的。

引數headers配置所支援的資源。

引數methods配置支援的方法,get、post、put等。

如果允許任意域名、任意資源、任意方法訪問自己的webapi,則三個引數全部使用星號”*”即可。

“EnableCors(“http://localhost:9012,http://192.168.1.108:9012“, ““, ““)”中的配置如果出現錯誤的話不會報錯,而是直接禁止未出現在配置表中的資源訪問。

如果使用第一種方式那麼可以從配置檔案中讀取網站列表,如果使用第二種方式,所有的引數只能使用常量。


原文:https://blog.csdn.net/chaoyangzhixue/article/details/52251322