您可以啓用通過創建自定義的行爲過濾CORS或白名單域名:
public class EnbaleCorsFilter : ActionFilterAttribute
{
private const string OutgoingOriginHeader = "Access-Control-Allow-Origin";
private const string OutgoingMethodsHeader = "Access-Control-Allow-Methods";
private const string OutgoingAgeHeader = "Access-Control-Max-Age";
private readonly string[] _origins;
private readonly string _methods;
public EnbaleCorsFilter(string[] origins = null, string methods = "*")
{
_origins = origins ?? new string[0];
_methods = methods;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var host = filterContext.HttpContext.Request.Url.Host;
var response = filterContext.HttpContext.Response;
if (_origins.Contains(host, StringComparer.CurrentCultureIgnoreCase))
{
response.AddHeader(OutgoingOriginHeader, host);
response.AddHeader(OutgoingMethodsHeader, _methods);
response.AddHeader(OutgoingAgeHeader, "3600");
}
}
}
和Application_Start()
方法Global.asax
文件添加EnbaleCorsFilter
:
GlobalFilters.Filters.Add(new EnbaleCorsFilter(new[] { "domain1", "domain2" }));
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);