-
-
Notifications
You must be signed in to change notification settings - Fork 675
Closed
Labels
H2Pull requests or issues related to HTTP/2Pull requests or issues related to HTTP/2enhancementNew feature or requestNew feature or request
Description
Bug Description
I'm trying to send a request to a local server running HTTP/2 without TLS (H2C) over a unix domain socket. This is what my company uses for internal services.
However, when I try to fetch the results, I git an SSL error:
{"library":"SSL routines","reason":"wrong version number","code":"ERR_SSL_WRONG_VERSION_NUMBER"} (fetch) TypeError: fetch failed
Reproducible By
I'm using node to start the local server:
import { createServer } from 'node:http2';
const server = createServer();
// ...define services.
server.listen('/tmp/test.sock');I can successfully query the local server via curl:
curl -k -v \
--unix-socket "/tmp/test.sock" \
--insecure \
-d '{"message":"test"}' \
-H "Content-Type: application/json" \
--http2-prior-knowledge \
http://localhost/api/demo_rest
But it doesn't work when querying using undici:
import { Agent, fetch as undiciFetch } from 'undici';
const localhostAgent = new Agent({
connect: {
socketPath: '/tmp/test.sock',
rejectUnauthorized: false,
requestCert: false,
},
allowH2: true,
});
await undiciFetch('http://localhost/api/demo_rest', {
body: JSON.stringify({ message: 'Greetings' }),
headers: { 'Content-type': 'application/json' },
method: 'POST',
dispatcher: localhostAgent,
});Expected Behavior
The expected behavior is that when a dispatcher does not request a cert, the fetch is able to make a request to an HTTP/2 server over a unix domain socket.
Logs & Screenshots
N/A
Environment
MacOs 14
Additional context
It feels really weird that I can easily start an insecure HTTP2 server using node, but it's very hard (or impossible) to send requests to it.
Metadata
Metadata
Assignees
Labels
H2Pull requests or issues related to HTTP/2Pull requests or issues related to HTTP/2enhancementNew feature or requestNew feature or request