邮差和简单的Http请求之间的区别与superagent

时间:2017-07-02 10:56:40

标签: javascript node.js postman http-status-code-301 superagent

我想知道一个简单的POST请求与superagent和POST请求与Postman之间的区别。 因为我试图废弃一个网站,所以我向Postman提出了一个帖子请求,并且每个人都工作正常,我得到了预期的结果。但是当我用superagent进行POST Http请求时,我得到了301重定向。

有一种方法可以解决这个问题与Postman相同的结果吗?

提前感谢您的回答。

4 个答案:

答案 0 :(得分:2)

您应该使用redirects。简单的例子:

const request = require('superagent');
const url = 'localhost:3000/example';
request
.post(url)
.send({msg: "hello"})
.redirects(1) //Add redirect functionality
.on('redirect', function(res) {
  console.log('Redirected');
})
.end(function(err, res){
  console.log(res);
})

答案 1 :(得分:1)

我不知道,但看起来邮递员遵循301(永久移动)而你的超级代理人不是。 301是重定向响应。见details

通常,您应该在代码中处理301响应。在回复中,您将找到重定向的URL。

答案 2 :(得分:1)

在邮递员中,如果收到HTTP 301响应,如果你没有看到301响应并且你在重定向后获得实际响应,它会自动重定向,但是在superagent中,它不会自动重定向,你会看到301响应。 / p>

你可以启用拦截器来禁用postman中的自动重定向。

大多数网站都使用此标题向浏览器说明,如果您拨打http://target.com它会收到301回复并重定向到https://target.com

,它应该在某些网站中进行重新编辑

答案 3 :(得分:1)

谢谢你的答案,我可能会发现我的问题:事实上服务器正在等待application / x-www-form-urlencoded格式。 enter image description here

我如何在superagent HTTP请求中翻译这个? 我试过了:

postData() {
    return new Promise((resolve, reject) => {
    request
            .post(this.url)
            .send('destinations={"1": "testa"}')
            .send('stopId=2643')
            .send('lineId=1150')
            .send('sens=2')
            .end((err, res) => {
            if (err) reject(err);
            resolve(res)
        })
    })
}

好的,我找到了解决方案,对于其他人,我发布了上述内容:

request
        .post(this.url)
        .set('Content-Type', 'application/x-www-form-urlencoded')
        .send({destinations: '{"1":"test"}'})
        .send({stopId: "2643"})
        .send({lineId: "1150"})
        .send({sens: "2"})
        .end(function(err, res){
         console.log(res);
      })