2 回答
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
該請(qǐng)求http://postalpincode.in/api/pincode/400705會(huì)產(chǎn)生一個(gè)帶有標(biāo)頭的301 Moved Permanently響應(yīng),該標(biāo)頭Location: http://www.postalpincode.in/api/pincode/400705告訴您資源在 可用http://www.postalpincode.in/api/pincode/400705。
如果您http://postalpincode.in/api/pincode/400705在瀏覽器中打開(kāi),它將自動(dòng)處理該301響應(yīng)并打開(kāi)該給定位置。
node的http模塊不會(huì)這樣做,它會(huì)為您提供實(shí)際的響應(yīng)(這是http模塊的預(yù)期行為)
如果您想使用該模塊,那么您需要編寫(xiě)自己的邏輯來(lái)遵循重定向或使用像requestwich 這樣的庫(kù)提供了遵循這些重定向的選項(xiàng)。
您需要檢查response.statusCode是否是301或302,如果是,則需要使用 獲取Location標(biāo)頭response.getHeader(name),然后重新發(fā)出請(qǐng)求,對(duì)于新的響應(yīng),您需要執(zhí)行相同的操作,以防發(fā)生另一個(gè)重定向。
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
您正在嘗試使用普通的 http 調(diào)用,但服務(wù)器正在響應(yīng)redirect(Document Moved)。節(jié)點(diǎn)http不會(huì)跟隨重定向,因此它會(huì)響應(yīng)重定向的 HTML。
您可以使用requestpackage來(lái)跟蹤重定向,或者使用更簡(jiǎn)單的包,例如follow-redirects. http它們?yōu)楦S重定向的節(jié)點(diǎn)提供了一個(gè)替代品。
編輯:如果您不想使用外部庫(kù),只需檢查響應(yīng)標(biāo)頭和 statusCode,如下所示request:
if (response.statusCode >= 300 && response.statusCode < 400 && response.headers['location']) { /* retry the http request at the location */ }添加回答
舉報(bào)
