When the scheme-based normalization is performed, an empty path is
normalized to "/". But as stated in RFC9110#4.2.3, this must not be applied
on OPTIONS requests.
So let's fix the issue by adding a test on the method.
Thanks to @zhanhb for the bug report and the analysis.
This patch should fix the issue #3352. It must be backported as far as 3.0.
normalize = 1;
}
- if (!isttest(path)) {
+ if (!isttest(path) && sl->info.req.meth != HTTP_METH_OPTIONS) {
path = ist("/");
normalize = 1;
}