2 回答

TA贡献1886条经验 获得超2个赞
该请求http://postalpincode.in/api/pincode/400705
会产生一个带有标头的301 Moved Permanently
响应,该标头Location: http://www.postalpincode.in/api/pincode/400705
告诉您资源在 可用http://www.postalpincode.in/api/pincode/400705
。
如果您http://postalpincode.in/api/pincode/400705
在浏览器中打开,它将自动处理该301
响应并打开该给定位置。
node的http
模块不会这样做,它会为您提供实际的响应(这是http
模块的预期行为)
如果您想使用该模块,那么您需要编写自己的逻辑来遵循重定向或使用像request
wich 这样的库提供了遵循这些重定向的选项。
您需要检查response.statusCode
是否是301
或302
,如果是,则需要使用 获取Location
标头response.getHeader(name)
,然后重新发出请求,对于新的响应,您需要执行相同的操作,以防发生另一个重定向。

TA贡献1820条经验 获得超10个赞
您正在尝试使用普通的 http 调用,但服务器正在响应redirect
(Document Moved)。节点http
不会跟随重定向,因此它会响应重定向的 HTML。
您可以使用request
package来跟踪重定向,或者使用更简单的包,例如follow-redirects
. http
它们为跟随重定向的节点提供了一个替代品。
编辑:如果您不想使用外部库,只需检查响应标头和 statusCode,如下所示request
:
if (response.statusCode >= 300 && response.statusCode < 400 && response.headers['location']) { /* retry the http request at the location */ }
添加回答
举报