【问题标题】:CORS: AccessControlAllowOrigin header with mulltiple domain valuesCORS:访问控制允许具有多个域值的 Origin 标头
【发布时间】:2016-10-04 05:09:08
【问题描述】:

我有一个包含资源列表(图像/css/js 文件)的网站“Website1”,并且我有多个客户端网站,它们使用我的网站“Website1”中的资源。

我需要在响应内容中添加 AccesscontrolAlloworigin 标头,以仅对列入白名单的客户端请求解决 CORS 问题(用于 ajax 调用)。

此外,我的内容有一些缓存逻辑,我无法在每次处理请求时添加标头。我可以将所有列入白名单的域名添加为访问控制允许原始标头值,还是有任何解决方法可以做到这一点(我不想添加 * 作为值,我只需要严格允许列入白名单的域名)。任何帮助表示赞赏。

【问题讨论】:

    标签: html ajax asp.net-mvc web w3c


    【解决方案1】:

    您可以通过创建自定义操作过滤器来启用 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);
    

    【讨论】:

      猜你喜欢
      • 2022-06-25
      • 2018-01-23
      • 2018-02-26
      • 2013-06-23
      • 2019-06-19
      • 2019-07-09
      • 2019-12-20
      • 2018-03-27
      相关资源
      最近更新 更多