服务器变量 UNENCODED_URL 包含奇怪的值而不是编码的斜杠
Server variable UNENCODED_URL contains strange value instead of encoded slash
我们有一个遗留 IIS DLL,它使用 GetServerVariable
(MSDN) 来检索 UNENCODED_URL
的值。当访问 URL:
https://example.com/a%2Fb
检索到的值将如下所示:
/path/to/server.dll/a0.000000b
这很奇怪,因为它应该是这样的:
/path/to/server.dll/a%2Fb
lpszPathInfo
(MSDN) 的 LPEXTENSION_CONTROL_BLOCK
的值为:
/a/b
符合预期。
有人知道为什么 UNENCODED_URL
值看起来像这样吗?我怎样才能检索到正确的值?
例如,如果您使用 printf
来输出环境变量的值,而不是使用调试器或 puts
,那将对此进行解释。 %2f
将被理解为对 printf
的命令,将第一个变量参数输出为浮点数。
始终使用 puts
或其他不改变值的函数输出字符串。
我们有一个遗留 IIS DLL,它使用 GetServerVariable
(MSDN) 来检索 UNENCODED_URL
的值。当访问 URL:
https://example.com/a%2Fb
检索到的值将如下所示:
/path/to/server.dll/a0.000000b
这很奇怪,因为它应该是这样的:
/path/to/server.dll/a%2Fb
lpszPathInfo
(MSDN) 的 LPEXTENSION_CONTROL_BLOCK
的值为:
/a/b
符合预期。
有人知道为什么 UNENCODED_URL
值看起来像这样吗?我怎样才能检索到正确的值?
例如,如果您使用 printf
来输出环境变量的值,而不是使用调试器或 puts
,那将对此进行解释。 %2f
将被理解为对 printf
的命令,将第一个变量参数输出为浮点数。
始终使用 puts
或其他不改变值的函数输出字符串。