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

HttpURLConnection should better handle URLs with literal IPv6 addresses

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • 7, 8
    • core-libs
    • b19
    • Verified

      see discussion thread on net-dev:
        http://mail.openjdk.java.net/pipermail/net-dev/2013-October/007680.html

      ---
      I've been trying to use HttpURLConnection to connect to a web server using its IPv6 link-local address.

      There are two issues with this:

      - HttpURLConnection work with URLs with the official % syntax (only the informal one) for the scope ID (normally required for link-local addresses).
       
        Indeed, http://[fe80::a00:27ff:aaaa:aaaa%eth0]/ (for example) can be used to send a request, but http://[fe80::a00:27ff:aaaa:aaaa%25eth0]/ will not send a request at all ("java.net.SocketException: Network is unreachable...").
        The difference is in the encoding of % (which separates the actual IP address from the scope ID).
        RFC 6874 (Section 2) says, "According to URI syntax [RFC3986], "%" is always treated as an escape character in a URI, so, according to the established URI syntax [RFC3986] any occurrences of literal "%" symbols in a URI MUST be percent-encoded and represented in the form "%25"."

      - HttpURLConnection sends the scope ID in the Host header, i.e. "Host: [fe80::a00:27ff:aaaa:aaaa%eth0]" instead of "Host: [fe80::a00:27ff:aaaa:aaaa]".
       
        Unfortunately, this doesn't seem to be allowed by RFC 4007, and this causes Apache Httpd to return a 400 error status.
        (There are more details in this Apache Httpd issue: https://issues.apache.org/bugzilla/show_bug.cgi?id=35122#c4 )
       
        The only workaround I've found was to set the Host header manually, but this also requires enabling "sun.net.http.allowRestrictedHeaders".


      These problems are present in the latest Java 7 release and in the Java 8 early release.

            prappo Pavel Rappo (Inactive)
            chegar Chris Hegarty
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: