@Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); if(sslCtx!=null) { p.addLast(new SslHandler(sslCtx.newEngine(ch.alloc()))); } p.addLast(new HttpResponseEncoder());//必须放在最前面,如果decoder途中需要回复消息,则decoder前面需要encoder p.addLast(new HttpRequestDecoder()); p.addLast(new HttpObjectAggregator(65536));//限制contentLength //大文件传输处理 // p.addLast(new ChunkedWriteHandler()); // p.addLast(new HttpContentCompressor()); //跨域配置 CorsConfig corsConfig = CorsConfigBuilder.forAnyOrigin().allowNullOrigin().allowCredentials().build(); p.addLast(new CorsHandler(corsConfig)); p.addLast(new DefaultListenerHandler<HttpRequest>(listener)); }
@Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); if (sslCtx != null) { p.addLast(sslCtx.newHandler(ch.alloc())); } if (enableGzip) { p.addLast(new HttpContentCompressor()); } p.addLast(new HttpServerCodec(36192 * 2, 36192 * 8, 36192 * 16, false)); p.addLast(new HttpServerExpectContinueHandler()); p.addLast(new HttpObjectAggregator(Integer.MAX_VALUE)); p.addLast(new ChunkedWriteHandler()); if (enableCors) { CorsConfig corsConfig = CorsConfigBuilder.forAnyOrigin().allowNullOrigin().allowCredentials().build(); p.addLast(new CorsHandler(corsConfig)); } if (null != blade.webSocketPath()) { p.addLast(new WebSocketServerProtocolHandler(blade.webSocketPath(), null, true)); p.addLast(new WebSockerHandler(blade)); } service.scheduleWithFixedDelay(() -> date = new AsciiString(DateKit.gmtDate(LocalDateTime.now())), 1000, 1000, TimeUnit.MILLISECONDS); p.addLast(new HttpServerHandler()); }
public static void addHttpServerCodec(@Nonnull ChannelPipeline pipeline) { pipeline.addLast("httpRequestEncoder", new HttpResponseEncoder()); // https://jetbrains.zendesk.com/agent/tickets/68315 pipeline.addLast("httpRequestDecoder", new HttpRequestDecoder(16 * 1024, 16 * 1024, 8192)); pipeline.addLast("httpObjectAggregator", new HttpObjectAggregator(MAX_CONTENT_LENGTH)); // could be added earlier if HTTPS if (pipeline.get(ChunkedWriteHandler.class) == null) { pipeline.addLast("chunkedWriteHandler", new ChunkedWriteHandler()); } pipeline.addLast("corsHandler", new CorsHandlerDoNotUseOwnLogger(CorsConfigBuilder .forAnyOrigin() .shortCircuit() .allowCredentials() .allowNullOrigin() .allowedRequestMethods(HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE, HttpMethod.HEAD, HttpMethod.PATCH) .allowedRequestHeaders("origin", "accept", "authorization", "content-type", "x-ijt") .build())); }
@Override public void initChannel(SocketChannel ch) { CorsConfig corsConfig = CorsConfigBuilder.forAnyOrigin().allowNullOrigin().allowCredentials().build(); ChannelPipeline pipeline = ch.pipeline(); if (sslCtx != null) { pipeline.addLast(sslCtx.newHandler(ch.alloc())); } pipeline.addLast(new HttpResponseEncoder()); pipeline.addLast(new HttpRequestDecoder()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(new ChunkedWriteHandler()); pipeline.addLast(new CorsHandler(corsConfig)); pipeline.addLast(new OkResponseHandler()); }
private CorsConfig getCorsConfig(Config config) { if (!config.hasPath(CFG_SERVER_CORS_ALLOWS_ORIGINS)) { return null; } List<String> origins = config.getStringList(CFG_SERVER_CORS_ALLOWS_ORIGINS); if (null == origins || origins.isEmpty()) { return null; } CorsConfigBuilder builder = null; for (String origin : origins) { if (SIGN_STAR.equals(origin)) { builder = CorsConfigBuilder.forAnyOrigin(); break; } } if (null == builder) { builder = CorsConfigBuilder.forOrigins(origins.toArray(new String[origins.size()])); } if (config.hasPath(CFG_SERVER_CORS_ALLOWS_CREDENTIALS)) { boolean allowCredentials = config.getBoolean(CFG_SERVER_CORS_ALLOWS_CREDENTIALS); if (allowCredentials) { builder.allowCredentials(); } } return builder.build(); }