ngx.escape_uri() 方法无法处理 '/' 符号?

我正在尝试将一个 url 编码作为参数值,例如:

url = "http://test.com?a=1&b=2"
encode_url = "http://domain?url="..ngx.escape_uri(url)

然后它就变成了:

http://domain?url=http%3A//test.com%3Fa%3D1%26b%3D2

但是我想要这个:

http://domain?url=http%3a%2f%2ftest.com%3fa%3d1%26b%3d2

我也试过 ngx.encode_args(),但是效果都是一样的。

有人知道为什么吗?应该怎么做呢?

点赞
用户6785777
用户6785777
host = "http://test.com"
uri = "?a=1&b=2"

encode_host = ngx.encode_args({[host]=true})
encode_args = ngx.escape_uri(uri)
encode_url = "http://domain?url=" .. encode_host .. encode_args
host = "http://test.com"
uri = "?a=1&b=2"

encode_host = ngx.encode_args({[host]=true}) # 对 host 进行编码
encode_args = ngx.escape_uri(uri) # 对 uri 进行编码
encode_url = "http://domain?url=" .. encode_host .. encode_args # 将编码过的 host 和 uri 组装成完整的 url
2019-04-18 09:57:06