Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for HTTP/3 #929

Closed
6 tasks done
macbre opened this issue Apr 28, 2021 · 5 comments
Closed
6 tasks done

Add support for HTTP/3 #929

macbre opened this issue Apr 28, 2021 · 5 comments

Comments

@macbre
Copy link
Owner

macbre commented Apr 28, 2021

To fully enable HTTP/3 in Chrome, you must launch it with the command line options --enable-quic --quic-version=h3-27

/cc @gmetais


Links


$ docker run -it --rm ymuski/curl-http3 curl -IL https://blog.cloudflare.com --http3
...
HTTP/3 200
date: Wed, 28 Apr 2021 13:32:06 GMT
content-type: text/html; charset=utf-8
set-cookie: __cfduid=d1693e08f51c7f8672d3a6cdbe91fa8131619616726; expires=Fri, 28-May-21 13:32:06 GMT; path=/; domain=.blog.cloudflare.com; HttpOnly; SameSite=Lax; Secure
x-powered-by: Express
cache-control: public, max-age=60
vary: Accept-Encoding
cf-cache-status: REVALIDATED
expires: Wed, 28 Apr 2021 13:33:06 GMT
cf-request-id: 09ba4713ff000034c0d792d000000001
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
set-cookie: __cf_bm=ed61fb9320c34e521bfbbaea016b19c160ada71e-1619616726-1800-AfM8ne2jYTpLyoN84LuPfCPOLpJlQQEJNUJGr70E23RcOB6xt6bWTZrGDCQDMrCkuAbzTHqk+PHbPcCrIAO8muk=; path=/; expires=Wed, 28-Apr-21 14:02:06 GMT; domain=.blog.cloudflare.com; HttpOnly; Secure; SameSite=None
server: cloudflare
cf-ray: 6470a79998e234c0-DUB
alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
$ docker run -it --rm ymuski/curl-http3 curl -V
curl 7.76.1-DEV (x86_64-pc-linux-gnu) libcurl/7.76.1-DEV BoringSSL quiche/0.8.0
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: alt-svc AsynchDNS HTTP3 HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL UnixSockets

Screenshot 2021-05-19 at 16 31 10

@macbre macbre added this to the Roadmap milestone Apr 28, 2021
@macbre
Copy link
Owner Author

macbre commented May 14, 2021

See macbre/docker-nginx-http3#31

@macbre
Copy link
Owner Author

macbre commented May 19, 2021

https://github.com/macbre/docker-nginx-brotli/releases/tag/1.19.6-http3 got published:

docker pull macbre/nginx-brotli:1.19.6-http3

@macbre
Copy link
Owner Author

macbre commented May 26, 2021

  • Chromium 91.0.4469.0 uses http/3 with no runtime flags provided.
2021-05-26T15:29:57.398Z puppeteer:protocol:RECV ◀ {"method":"Network.responseReceived","params":{"requestId":"22341.4","loaderId":"234C0E269C184501DA6A54A9C1F660DC","timestamp":102935.337409,"type":"Script","response":{"url":"https://gf.dev/cdn-cgi/bm/cv/669835187/api.js","status":200,"statusText":"","headers":{"date":"Wed, 26 May 2021 15:29:57 GMT","content-encoding":"gzip","x-content-type-options":"nosniff","nel":"{\"report_to\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","expect-ct":"max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"","vary":"Accept-Encoding","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v2?s=9OwDbUA3J4GKVV9LrhVx89tdZDLzc%2BDQMbESpqwwtixomAqG711mtuRPU9N4lM%2FCncnFE0A%2BtSxvg84PMdY%2Bm9jpODqjXbpChDBIGIJPoAUAsJ8D\"}],\"group\":\"cf-nel\",\"max_age\":604800}","content-type":"text/javascript","cache-control":"max-age=604800, public","strict-transport-security":"max-age=15552000; preload","cf-ray":"65580abe4c8a0b4b-AMS","alt-svc":"h3-27=\":443\"; ma=86400, h3-28=\":443\"; ma=86400, h3-29=\":443\"; ma=86400","cf-request-id":"0a4ae50aed00000b4b438d0000000001"},"mimeType":"text/javascript","requestHeaders":{":path":"/cdn-cgi/bm/cv/669835187/api.js","sec-fetch-mode":"no-cors","accept-encoding":"gzip, deflate, br","accept-language":"en-US","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4469.0 Safari/537.36 Phantomas/2.2.0","accept":"*/*","referer":"https://gf.dev/http3-test","sec-fetch-dest":"script",":authority":"gf.dev","cookie":"PHPSESSID=0avatthnejb065l0dkvq971fkt; _token=88230657201892a881e575cf6b49c7c2d4980f063509fee711449f2c115e6147; __cflb=0H28vEisZnKBD83punobjr6sTfEq2ZkGGJBcgi1nCMZ",":scheme":"https","sec-fetch-site":"same-origin",":method":"GET"},"connectionReused":true,"connectionId":0,"remoteIPAddress":"172.67.213.5","remotePort":443,"fromDiskCache":false,"fromServiceWorker":false,"fromPrefetchCache":false,"encodedDataLength":573,"timing":{"requestTime":102935.272726,"proxyStart":-1,"proxyEnd":-1,"dnsStart":-1,"dnsEnd":-1,"connectStart":-1,"connectEnd":-1,"sslStart":-1,"sslEnd":-1,"workerStart":-1,"workerReady":-1,"workerFetchStart":-1,"workerRespondWithSettled":-1,"sendStart":1.216,"sendEnd":1.381,"pushStart":0,"pushEnd":0,"receiveHeadersEnd":63.66},"responseTime":1.622042997393375e+12,"protocol":"h3-29","securityState":"secure","securityDetails":{"protocol":"QUIC","keyExchange":"","keyExchangeGroup":"X25519","cipher":"AES_128_GCM","certificateId":0,"subjectName":"sni.cloudflaressl.com","sanList":["sni.cloudflaressl.com","gf.dev","*.gf.dev"],"issuer":"Cloudflare Inc ECC CA-3","validFrom":1596758400,"validTo":1628337600,"signedCertificateTimestampList":[],"certificateTransparencyCompliance":"unknown"}},"frameId":"0413C831017230A32C6EDDF0AAA40DE2"},"sessionId":"7886BF98E3BB47A5327156880B83C970"}

"protocol":"h3-29"

@macbre
Copy link
Owner Author

macbre commented May 26, 2021

For http/3 we need to wait for subsequent requests from the same domain:

Response: GET https://gf.dev/http3-test [text/html h2]
Response: GET https://gf.dev/static/css/all.min.css [text/css h2]
Response: GET https://gf.dev/cdn-cgi/apps/head/BbOSJ-ZMRnT-WKwVXSLwrT5XQss.js [application/javascript h2]
Response: GET https://gf.dev/static/images/sections/header/logo.svg [image/svg+xml h3-29]
Response: GET https://gf.dev/cdn-cgi/bm/cv/669835187/api.js [text/javascript h3-29]

This was referenced May 26, 2021
@macbre
Copy link
Owner Author

macbre commented May 26, 2021

Fixed by #941

@macbre macbre closed this as completed May 26, 2021
@macbre macbre modified the milestones: Roadmap, v2.3 May 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant