set_unescape_uri
`set_unescape_uri` 指令通过取消对百分号编码字符的转义来解码 URI 组件。
NGINX Set-Misc module
·
httpserverlocationif in serverif in location
语法set_unescape_uri $dest_var $src_var;
默认值none
上下文http, server, location, if in server, if in location
参数1-2
说明
set_unescape_uri 用于解码可能包含百分号编码字符的 URI 组件,例如表示空格的 '%20'。它可以接受一个或两个参数。第一个参数是保存已编码字符串的变量,第二个(可选)参数指定将存放取消转义结果的目标变量。如果未提供第二个参数,结果将存回第一个变量。该指令在处理查询中的用户输入时尤其有用,查询中的 URI 可能包含需要还原为原始表示的特殊字符。它可在多种上下文中使用,包括 http、server、location 和 if 块,使其在需要解析 URI 的不同配置中具有良好的通用性。
配置示例
location /example {
set $escaped_arg $arg_encoded;
set_unescape_uri $decoded_arg $escaped_arg;
# Now $decoded_arg contains the unescaped value.
}⚠
如果源变量为空或包含无效的百分号编码的字符,结果可能无效或会导致错误。
⚠
确保在支持该指令的上下文中使用它,因为在不适当的上下文中误用可能会导致其无法正常工作。