У нас есть устаревшая IIS DLL, которая использует GetServerVariable
(MSDN) чтобы получить значение UNENCODED_URL
, При доступе к URL:
https://example.com/a%2Fb
полученное значение будет выглядеть так:
/path/to/server.dll/a0.000000b
что странно, потому что это должно выглядеть так:
/path/to/server.dll/a%2Fb
LPEXTENSION_CONTROL_BLOCK
ценность lpszPathInfo
(MSDN) имеет значение:
/a/b
как и ожидалось.
Кто-нибудь знает, почему UNENCODED_URL
значение выглядит следующим образом, и как я могу получить правильное значение?
Если вы используете, например, printf
вывести значение переменной среды вместо использования отладчика, или puts
, это объяснит это. %2f
будет пониматься как команда printf
вывести первый переменный аргумент в виде числа с плавающей запятой.
Всегда выводить строки с puts
или другие функции, которые не изменяют значение.
Других решений пока нет …