从Postman预请求脚本获取响应URL

1u4esq0p  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(439)

我需要从预请求脚本中的请求中获取响应的url(在任何重定向之后)。这在postman中可能吗?
Postman 响应对象似乎不包括URL https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-response-data
这不起作用,但我希望做一些像这样的事情:

pm.sendRequest("https://foobar.com", function (err, response) {
    console.log(response.url);
});
ukdjmx9f

ukdjmx9f1#

我找到了一个解决方案,通过禁用Automatically follow redirects设置,然后检查response.headers的位置标题,例如。

const initialUrl = "https://foobar.com";

pm.sendRequest(initialUrl, function (err, response) {
    getLocationAfterRedirects(response, initialUrl).then((url) => setToken(url));
});

function getLocationAfterRedirects(response, requestUrl) {
    return new Promise((resolve) => {

        if (!isResponseRedirect(response)) {
            return resolve(requestUrl);
        }

        const redirectUrl = response.headers.find(h => h["key"] === "Location")["value"];

        pm.sendRequest(redirectUrl, (err, res) => {
            getLocationAfterRedirects(res, redirectUrl)
                .then((location) => resolve(location));
        });

    });
}

function isResponseRedirect(response) {
    return response.code > 300 && response.code < 400;
}
mqkwyuun

mqkwyuun2#

尝试pm.request.headers[“referer”]
发出请求后,重定向URL将位于临时请求头中。
你可以参考这篇twitter文章了解更多信息:https://twitter.com/ambertests/status/1153709610768859136
希望这对你有帮助

相关问题