Open risacher opened 6 years ago
q.v. https://tools.ietf.org/html/rfc7540#section-8.1.2.3
This has some specific guidance on how to convert HTTP/2 pseudo headers into HTTP/1.1 headers. E.g. "An intermediary that converts an HTTP/2 request to HTTP/1.1 MUST create a Host header field if one is not present in a request by copying the value of the ":authority" pseudo-header field."
You could check maybe Redbird implementation of it. https://github.com/OptimalBits/redbird
Interesting. From what I can tell, Redbird uses the 'spdy' module in place of the https module if HTTP/2 is enabled, and apparently that's sufficient. The relevant code from redbird/proxy.js is this:
if (sslOpts.http2) {
https = sslOpts.serverModule || require('spdy');
if(_.isObject(sslOpts.http2)){
sslOpts.spdy = sslOpts.http2;
}
} else {
https = sslOpts.serverModule || require('https');
}
+1
Nice, I didn't know the spdy
module could be used as a drop-in replacement for https
, but unfortunately it's no longer being maintained.
spdy apparently does not work for node versions above 10.5, so its suitability as a workaround is diminishing.
compare to: https://github.com/nxtedition/node-http2-proxy
Any updates here ?
Can it support HTTP/3.0? (I'm not a devil)
Now that HTTP2 is in core, it should be supported by node-http-proxy.
My initial efforts to try to make this work result in the following errror:
I think this is because in http-proxy/lib/http-proxy/common.js, setupOutgoing() is basically copying headers from the incoming request to the outgoing request, and HTTP2 headers start with colons, but HTTP1 headers cannot.