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