Request: 由于编码的位置标头,请求未重定向

创建于 2018-01-02  ·  3评论  ·  资料来源: request/request

概括

大家好,我在向 URL 发送请求时遇到问题,该请求在收到301后重定向到另一个 URL。

最简单的重现示例

request('http://www.tanitbar.ru/menu.aspx?cat=6', function (error, response, body) {
  console.log('error:', error);
  console.log("response", response);
});,

1) 第一个响应包含等于 301 的状态码(这意味着我们应该从location标头重定向到 URL,但它包含编码的俄罗斯字母: Салаты

2) 由于此 URL ( http://www.tanitbar.ru/Салаты ) 不存在,我收到404错误

预期行为




期望得到页面的 html 正文,状态码等于200

当前行为



我现在得到404

可能的解决方案



curl工作正常并在收到 301 后重定向到另一个 URL
curl "http://www.tanitbar.ru/menu.aspx?cat=6" -L ,(curl 默认不重定向,因此我们需要传递-L选项)

我想我们应该在重定向之前以某种方式解码位置标头(顺便说一句,我无法手动解码)

语境



无法从 JS 接收页面内容。

你的环境

| 软件 | 版本
| ---------------- | --------
| 请求 |^2.83.0
| 节点 |8.7.0
| npm |5.4.2
| 操作系统 | Linux, Ubuntu

提前致谢!

stale

最有用的评论

@mikeal https://github.com/nodejs/node/issues/17390可能相关
顺便说一句, Buffer.from(location, 'binary').toString('utf8')对我有用。

所有3条评论

我们甚至对该标头的编码做任何事情吗? 我认为我们只是从 Node.js 的解析器中得到它。

@mikeal https://github.com/nodejs/node/issues/17390可能相关
顺便说一句, Buffer.from(location, 'binary').toString('utf8')对我有用。

此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动,它将被关闭。 感谢你的贡献。

此页面是否有帮助?
0 / 5 - 0 等级