GoogleChromeLabs / simplehttp2server

A simple HTTP/2 server for development
Other
1.74k stars 98 forks source link

Browsing http://localhost:5000 causes binary file to be downloaded #8

Closed tony19 closed 8 years ago

tony19 commented 8 years ago

Description

After starting simplehttp2server, the console shows Listening on :5000.... If we forget that it's serving over https and try to access http://localhost:5000, a binary file gets downloaded.

Steps to Reproduce

  1. CD into directory containing index.html
  2. Run simplehttp2server.
  3. Browse to http://localhost:5000 (instead of https).

    Expected Results

    • Server log shows full URL (i.e., Listening on https://localhost:5000)
    • or any of the following:
    • Redirect to https (301)
    • Serve the index.html (unencrypted h2 preferably, or even http/1.1)
    • Display a meaningful/helpful error page
    • Display a meaningful/helpful error on the terminal's server log

      Actual Results

    • Binary file is downloaded instead of a page shown in browser
    • Server log emits cryptic (at least for someone unfamiliar with TLS) error:
2016/06/17 22:12:43 http: TLS handshake error from [::1]:54431: tls: first record does not look like a TLS handshake

Environment

x Version
Operating System OS X El Capitan
Go go version go1.6.2 darwin/amd64
Shell zsh
Browser Chrome 51
surma commented 8 years ago

Yes, I have not quite figured out what to do abut that. The reason this is happening is that the browser tries to connect with TLS on a non-TLS port. I don’t want to add support for unencrypted http/1.1 because this is not a production server anyways and it should be obvious right away if you are not successfully using h2. A custom error page would be a good idea, but I don’t think I can serve both HTTP and HTTP/2 on the same port. I’ll investigate.

Server log shows full URL That is a good remark. Will add.