请求遵循redirect,无需发布数据

我在Node.js中使用request.js来处理http请求。

request({ method: 'POST', uri: 'http://www.example.com/getData', followAllRedirects: true, followOriginalHttpMethod: true, json: true, form: { id: 1, msg: 'Test data', }, }, (err, res, body) => {}) 

比如,当我将{ id: 1, msg: 'Test data' }http://www.example.com/getData ,代理将redirect到http://us.example.com/getData

上面的代码redirect到http://us.example.com/getData ,但我怎样才能设置redirect与发布数据?

如果不是不可能,这将是很难的。

如果redirect是通过发送“301 Moved Permanently”或“302 Found”HTTP状态码完成的,那么实际上它就像发送了“303 See Other”一样工作,即GET请求是在没有数据发送

请参阅Wikipedia上的HTTP状态码列表 :

这是一个违背标准的行业实践的例子。 HTTP / 1.0规范(RFC 1945)要求客户端执行临时redirect(原始描述短语是“暂时移动”),但stream行的浏览器使用303 See Other的function实现302。 因此,HTTP / 1.1添加了状态码303和307来区分这两种行为。 但是,某些Web应用程序和框架使用302状态代码,就好像它是303一样。

有一个“307临时redirect”(自HTTP / 1.1以来)创build,以解决这个问题, 不允许更改HTTP方法 – 所以从POST的redirect应仍然是POST – 请参阅Wikipedia:

在这种情况下,请求应该与另一个URI重复; 但是,将来的请求仍应使用原始URI。 与历史上302如何实现不同,请求方法在重新发送原始请求时不允许被改变。 例如,POST请求应该使用另一个POST请求重复。

但是,如果这在特定的情况下工作很难说,因为它取决于你打电话的API,并将需要更改该API的实现。