Why does the parameter obtained by nginx, a slash with URL format, become a

< H2 > as shown in figure < / H2 >

clipboard.png

< H2 > nginx configuration < / H2 >
location ~* ^/_proxy/(.*)$ {
    return 200;
    add_header Your-Params $1;
}

I passed the parameter https://a.com/a.jpg, but returned https:/a.com/a.jpg , and the slash became one, which is why

Jun.17,2022

have you noticed that your address is a complete address, and nginx will normalize the path before parsing it. Explain here when to normalize

the so-called normalization is to decode the encoded characters in URI in the form of "% XX", and then parse the relative path in URI. " And ".." In addition, two or more adjacent slashes may be compressed into one slash.

example: if REQUEST_URI is / / trip/t.php, the normalized value will be stored in $request_uri for / trip/t.php,Nginx, while the normalized value will be stored in $uri. Ps where $request_uri and $uri are Nginx embedded variables.

do you understand? I passed the parameter https://a.com/a.jpg, but returned https:/a.com/a.jpg . The reason why the slash becomes one is because nginx normalizes the url format.

ps: I do java. In fact, this problem of url standardization is also explained in the official documents of spring security. If the English is good, you can take a look at the original text, https://docs.spring.io/spring...

.

the spring security component directly throws a 500th exception in response to the existence / / situation of url, because this does not conform to the url specification, and nginx normalizes it

Menu