예제 #1
0
 public override void ChannelRead(IChannelHandlerContext context, object message)
 {
     if (message is IHttpRequest req)
     {
         this.request = req;
         var origin = request.Headers.Get(HttpHeaderNames.Origin, null);
         this.config = GetForOrigin(origin);
         if (IsPreflightRequest(req))
         {
             this.HandlePreflight(context, req);
             return;
         }
         if (this.isShortCircuit && !(origin is null || this.config is object))
         {
             Forbidden(context, req);
             return;
         }
     }
     _ = context.FireChannelRead(message);
 }
예제 #2
0
        public CorsHandler(CorsConfig config)
        {
            Contract.Requires(config != null);

            this.config = config;
        }
예제 #3
0
 public CorsHandler(CorsConfig config)
     : this(config is object?new List <CorsConfig>(new[] { config }) : null, config.IsShortCircuit)
 {
 }