HttpComponents HttpCore
  1. HttpComponents HttpCore
  2. HTTPCORE-158

Support for 'Upgrade' request header / 101 (Switching Protocols) response (as defined per RFC 2817)

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Future
    • Component/s: HttpCore
    • Labels:
      None

      Description

      Presently HttpCore provides support for HTTP CONNECT method for establishing end-to-end tunnels across HTTP proxies as specified in the RFC 2817. However, HttpCore currently does not support 'Upgrade' / 101 (Switching Protocols) handshaking, which does not seem as widely used by the common HTTP agents and servers as HTTP CONNECT.

      Adding support for upgrading plain connections to TLS will require significant amount of work and is likely to call for non-trivial changes to the existing protocol handlers.

      We currently have no resources within the project to assign to this task, but will gladly assist an external contributor willing to work on adding support for 'Upgrade' / 101 (Switching Protocols) handshaking to HttpCore. This may also be a good topic for a Google Summer of Code project or a similar program.

      Oleg

        Issue Links

          Activity

          Oleg Kalnichevski created issue -
          Oleg Kalnichevski made changes -
          Field Original Value New Value
          Link This issue blocks HTTPCLIENT-750 [ HTTPCLIENT-750 ]
          Hide
          Ortwin Glück added a comment -

          It should be noted though, than the Upgrade handshake is not limited to proxies. It can be used on any HTTP connection. It's like the STARTTLS command in SMTP.

          Show
          Ortwin Glück added a comment - It should be noted though, than the Upgrade handshake is not limited to proxies. It can be used on any HTTP connection. It's like the STARTTLS command in SMTP.
          Oleg Kalnichevski made changes -
          Link This issue blocks HTTPCLIENT-751 [ HTTPCLIENT-751 ]
          Hide
          Yutaka Takeda added a comment -

          Currently proposed WebSocket protocol in IETF hybi WG reuses this Upgrade/101. As opposed to RFC 2817, it tries to completely replaces HTTP with WebSocket protocol, it would involve providing an interface to an external facility because it is no longer an HTTP. For instance, if you try to implement WebSocket via current Apache module handler, how can it suppress HTTP response, or how can it use underlying TCP socket in another facility(,or process)? There doesn't seem to be a way to achieve either of them.

          Show
          Yutaka Takeda added a comment - Currently proposed WebSocket protocol in IETF hybi WG reuses this Upgrade/101. As opposed to RFC 2817, it tries to completely replaces HTTP with WebSocket protocol, it would involve providing an interface to an external facility because it is no longer an HTTP. For instance, if you try to implement WebSocket via current Apache module handler, how can it suppress HTTP response, or how can it use underlying TCP socket in another facility(,or process)? There doesn't seem to be a way to achieve either of them.
          Hide
          Oleg Kalnichevski added a comment -

          Yutaka

          I suspect you might be confusing HttpCore (which is a java library) and Apache HTTPD server.

          Oleg

          Show
          Oleg Kalnichevski added a comment - Yutaka I suspect you might be confusing HttpCore (which is a java library) and Apache HTTPD server. Oleg
          Gavin made changes -
          Link This issue blocks HTTPCLIENT-751 [ HTTPCLIENT-751 ]
          Gavin made changes -
          Link This issue is depended upon by HTTPCLIENT-751 [ HTTPCLIENT-751 ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Oleg Kalnichevski
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:

                Development