Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8300238

java.net.http.HttpClient does not let you override the :authority header

    XMLWordPrintable

Details

    • generic
    • generic

    Description

      ADDITIONAL SYSTEM INFORMATION :
      openjdk 11.0.17 2022-10-18
      OpenJDK Runtime Environment (build 11.0.17+8-post-Ubuntu-1ubuntu218.04)
      OpenJDK 64-Bit Server VM (build 11.0.17+8-post-Ubuntu-1ubuntu218.04, mixed mode, sharing)

      A DESCRIPTION OF THE PROBLEM :
      I am using Java jdk11 HttpClient.

      I am trying to manually provide host header for my HTTP requests. To enable this behaviour, I am settting
      -Djdk.httpclient.allowRestrictedHeaders=host

      Host header is not getting overriden when I make request to the HTTP 2 supporting server. The request I am using is:

          HttpRequest request =
              HttpRequest.newBuilder()
                  .version(HttpClient.Version.HTTP_2)
                  .uri(URI.create("https://httpbin.org/get"))
                  .header("Host", "someHost")
                  .GET().build();

      Here the host does not get overriden to "someHost" and "httpbin.org" is sent as host in the request.

      Whereas if I use HTTP 1.1 to make the same request, I works as expected:

          HttpRequest request =
              HttpRequest.newBuilder()
                  .version(HttpClient.Version.HTTP_1_1)
                  .uri(URI.create("https://httpbin.org/get"))
                  .header("Host", "someHost")
                  .GET().build();

      Here the host header received by server is "someHost", which is expected behaviour.


      FREQUENCY : always


      Attachments

        Activity

          People

            michaelm Michael McMahon
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: