System.Web.Http.Cors配置跨域訪問

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

<add key="origins" value="http://localhost:9012,http://192.168.1.108:9012" />
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章