[undici] Preflight requests from Safari
Prerequisites
- [X] I have written a descriptive issue title
- [X] I have searched existing issues to ensure the issue has not already been raised
Issue
A thing to be aware of when undici is used. In a CORS situation, preflight requests from Safari lead to 500 error.
Indeed, Safari sends an OPTIONS request with a content-length: 0 header, which is not well handled by undici in that situation.
It can be fixed by removing that content-length header, if present (Chrome doesn't send it), before calling the proxy function:
if(req.method === 'OPTIONS' && req.headers.hasOwnProperty('content-length')){
delete req.headers['content-length'];
}
proxy(...
Why not fix it in upstream undici?
Agree, I didn't expect it to be fixed here. Just think it's worth mentioning for other users, with a quick fix, as it should be quite common in a proxy situation, and can easily pass under the radar. I will open an issue in undici linking that one.
After more digging,
it turns out fast-proxy already handles that content-length header issue for GET and HEAD methods.
Seems logical to fix it here then, I'll submit a PR to add the OPTIONS method.
Looking forward.