一、使用System.Web.Http.Cors配置跨域访问:
1、在App_Start/WebApiConfig.Register方法中进行配置
//Web API 配置和服务
//跨域配置
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));//全部不限制
参数说明:
origins:允许访问的域名,多个域名以逗号分隔。使用“*”全部允许。
headers:配置所支持的资源,使用“*”全部允许,使用null或“”不允许。
methods:配置支持的请求方法,使用“*”全部允许,使用null或“”不允许。
config.EnableCors(new EnableCorsAttribute("http://localhost:1234/,http://localhost:2345/", "*", "*"));//限制域名
2、在Web.config中进行配置
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="HEAD, GET, POST, PUT, PATCH, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
3、自定义类并继承ActionFilterAttribute类
public class CustomActionFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// 方法执行后
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnActionExecuted(HttpActionExecutedContext
actionExecutedContext)
{
//修改下response
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
base.OnActionExecuted(actionExecutedContext);
}
}
}
将该类对允许跨域的Controller进行配置:
[CustomActionFilterAttribute]
public class ValuesController : ApiController
{
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
public string Get(int id)
{
return "value Get";
}
}
当然, EnableCorsAttribute也可以对控制器或接口进行跨域配置。