【问题标题】:Execute on node a equivalent request tested on Postman在节点上执行在 Postman 上测试的等效请求
【发布时间】:2019-06-17 11:41:19
【问题描述】:

我无法在经过 Postman 测试和工作的节点上发出请求。我尝试的所有操作都会返回 302 状态代码。

这是我想要做的请求,它在邮递员上执行得很好:

这是我的尝试之一:

function ListaCidades(estado) {
    return new Promise((resolve, reject) => {

        request({
            url: "http://www1.caixa.gov.br/Simov/carregaListaCidades.asp",
            method: "POST",
            body:     "cmb_estado=MG&cmb_cidade=&cmb_tp_venda=0&cmb_tp_imovel=Selecione&cmb_area_util=Selecione&cmb_faixa_vlr=Selecione&cmb_quartos=Selecione&cmb_vg_garagem=Selecione"
        }, function callback(error, resp, body) {
            if (error)
            {
                reject(error);
                process.exit(1);
            }

            resolve(resp.statusCode);
        })
    });
}

我收到 HTTP 302 作为状态码和一个空的正文。

怎么了?

【问题讨论】:

    标签: node.js http post web-scraping request


    【解决方案1】:

    从表面上看 302 错误,这意味着 URL 上有一个(临时)重定向。以下 stackoverflow 主题讨论了如何处理这种情况:

    How do you follow an HTTP Redirect in Node.js?

    Follow redirect with node.js request

    就 Postman 而言,它会自动跟随重定向。即使有一个停止它的选项,它似乎在桌面版本上不起作用!

    重定向处理可以在下面的浏览器控制台中看到。所以你的代码需要处理这种情况。

    【讨论】:

    • 我在 Postman 上禁用了自动跟随重定向,但它仍然给了我想要的数据。似乎我只收到来自节点的 302 代码,因为请求是错误的。在 Postman 中,它返回 200 状态码。
    • @rafcruz,如果不是真正的重定向,我无法解释 302。但是请参阅我对 Postman 在幕后使用您的代码不是的请求标头的更新。
    • @rafrcruz:我再次更新了解决方案。我现在确信这是一个真正的重定向。显然,在 Postman 中禁用重定向的选项仅适用于 Chrome 扩展程序,而不适用于我(可能你正在)使用的桌面应用程序。我也尝试过使用 CURL 和浏览器中的请求,在这两种情况下我都得到了 302。所以问题是 Postman 正在处理重定向,而你的代码不是。请参阅我现在添加的 Chrome 控制台屏幕截图。
    猜你喜欢
    • 2018-03-29
    • 2017-11-15
    • 2017-07-23
    • 2019-03-09
    • 2018-10-27
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多