njs: get raw requestURI or full querystring

Sergey A. Osokin osa at freebsd.org.ru
Wed Apr 28 02:50:38 UTC 2021


Hi Gunter,

hope you're doing well these days.

On Tue, Apr 27, 2021 at 11:21:26PM +0200, Gunter Grodotzki wrote:
> Hi all,
> 
> I would love to try out nginx njs for https://url.rw
> 
> Unfortunately I do not seem to be able to get the value of the querystring e.g.
> in my case it does not contain any key-value pairs:
> 
> https://url.rw/?https%3A%2F%2Flifeofguenter.de
> 
> I am interested in the value “https%3A%2F%2Flifeofguenter.de” (well ideally
> urldecoded).

According to https://nginx.org/en/docs/njs/reference.html#http, the HTTP
request object has arguments:

r.args{}
    request arguments object, read-only

It's possible to get an argument with the following example:

    for (var arg in r.args) {
        if (arg != '') {
            str += arg;
            break;
        }
    }

The str can be unescaped then with the following function,
http://nginx.org/en/docs/njs/reference.html#querystring_unescape

querystring.unescape(string)

    Performs decoding of URL percent-encoded characters of the string,
    returns an unescaped query string.


Hope that helps.

-- 
Sergey Osokin


More information about the nginx-devel mailing list