[ https://issues.apache.org/jira/browse/HTTPCORE-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17511494#comment-17511494 ]
Oleg Kalnichevski commented on HTTPCORE-692: -------------------------------------------- [~rschmitt] Sounds correct to me. As long as the signature matches the request URI, connection specific headers should get correctly populated by the protocol handlers automatically without invalidating the signature. Oleg > H2 should throw illegal header exception when use Host header as Connection > header > ---------------------------------------------------------------------------------- > > Key: HTTPCORE-692 > URL: https://issues.apache.org/jira/browse/HTTPCORE-692 > Project: HttpComponents HttpCore > Issue Type: Improvement > Components: HttpCore > Affects Versions: 5.1 > Environment: Macos 11.6 > openjdk 11.0.12 2021-07-20 > Reporter: yinwoods > Priority: Minor > Labels: easyfix > Fix For: 5.2-beta1 > > Original Estimate: 1h > Time Spent: 1h 20m > Remaining Estimate: 0h > > I notice org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java:105 > throws ProtocolException when header contains Connection. When header contains > host/upgrade/transfer-encoding header, should it throws ProtocolException > eigther? > > demo code as below, when I comment Host header, I got 200 response, and when > uncomment, got 400 bad request. > {code:java} > // > public class HttpUtilTest { > public static void main(String[] args) throws Exception { > HttpContext httpContext = new BasicHttpContext(); > BasicCookieStore cookie = new BasicCookieStore(); > httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookie); > SimpleHttpRequest request = SimpleRequestBuilder.create(Method.GET) > .setUri("https://zzpro2.wmeimob.cn/api/user") > .addHeader("User-Agent", "zhenzhu/3.3.3.0 CFNetwork/1128.0.1 > Darwin/19.6.0") > .addHeader("loading", "false") > .addHeader("Accept-Language", "zh-cn") > .addHeader("toast", "true") > // .addHeader("Host", "zzpro2.wmeimob.cn") > .addHeader("Accept-Encoding", "gzip, deflate, br") > .build(); > SSLContext sslcontext = CipherSuitesUtil.createSslContext(); > final TlsStrategy tlsStrategy = new > DefaultClientTlsStrategy(sslcontext, NoopHostnameVerifier.INSTANCE); > final PoolingAsyncClientConnectionManager connectionManager = > PoolingAsyncClientConnectionManagerBuilder > .create() > .setTlsStrategy(tlsStrategy) > .build(); > IOReactorConfig ioConfig = > IOReactorConfig.custom() > .setSoKeepAlive(true) > .setSoTimeout(Timeout.ofMilliseconds(5000)) > .setIoThreadCount(4) > .setSelectInterval(TimeValue.ofMilliseconds(500)) > .build(); > RequestConfig requestConfig = > RequestConfig.custom() > .setCookieSpec(StandardCookieSpec.RELAXED) > .setConnectTimeout(Timeout.ofMilliseconds(5000)) > .setResponseTimeout(Timeout.ofMilliseconds(5000)) > .setRedirectsEnabled(true) > .setMaxRedirects(10) > .build(); > HttpAsyncClientBuilder clientBuilder = HttpAsyncClients.custom() > .setDefaultRequestConfig(requestConfig) > .setRedirectStrategy(CustomRedirectStrategy.INSTANCE) > .setConnectionManager(connectionManager) > .setVersionPolicy(HttpVersionPolicy.NEGOTIATE) > .setIOReactorConfig(ioConfig); > CloseableHttpAsyncClient client = clientBuilder.build(); > client.start(); > client.execute(request, httpContext, new FutureCallback<>() { > @Override > public void completed(SimpleHttpResponse result) { > try { > System.out.println(result); > } catch (Exception e) { > } > } > @Override > public void failed(Exception ex) { > ex.printStackTrace(); > } > @Override > public void cancelled() { > System.out.println("cancelled"); > } > }); > Thread.sleep(50 * 1000); > client.close(); > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org