我想將請求從一個本地主機發送到在同一臺機器上運行的另一個本地主機。第一個是localhost:3000第二個localhost:3005。
下面的代碼來自:3005試圖發送請求的機器:3000:
return new Promise<EventResponse>((resolve, reject) => {
const httpOptions= {
hostname: "http://localhost:3000", //not working also without http/https
method: 'POST',
path: '/api/something',
headers: {
"Content-Type": "application/json",
}
}
const request = http.request(httpOptions, (res: TraceoIncomingMessage) => {
res.setEncoding("utf8");
res.on("error", reject);
});
request.on("error", (err) => {
console.log("ERROR: ", err); //ENOTFOUND
reject;
});
request.on("timeout", () => {
request.destroy();
reject({
statusCode: 400
});
});
request.write(JSON.stringify(payload));
request.end();
});
有人可以告訴我為什么上面的代碼會拋出這個:
ERROR: Error: getaddrinfo ENOTFOUND 127.0.0.1:3000
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: '127.0.0.1:3000'
}
我確定:3000在發送此請求期間服務器正在運行。
謝謝你的幫助!
uj5u.com熱心網友回復:
錯誤訊息非常清楚:它說它找不到名為 的主機127.0.0.1:3000,這是完全可以理解的,因為冒號字符:在主機名、IPv4 地址和 IPv6 地址中是非法的。
3000是埠號,不是主機名的一部分。您必須3000作為埠和127.0.0.1/或localhost作為主機名傳遞:
const httpOptions= {
hostname: "localhost",
port: 3000,
method: 'POST',
path: '/api/something',
headers: {
"Content-Type": "application/json",
}
}
請注意,這同樣適用http://:主機名、IPv4 地址和 IPv6 地址中的正斜杠/也是非法的。HTTP 是協議,它不是主機名的一部分。HTTP 是 的默認協議http.request,因此無需傳遞。如果你想要一個不同的協議(例如 HTTPS),你必須通過它:
const httpOptions= {
hostname: "localhost",
port: 3000,
protocol: 'https:',
method: 'POST',
path: '/api/something',
headers: {
"Content-Type": "application/json",
}
}
如果我不得不猜測,我會說問題的根本原因是您混淆了 URI、主機名、協議和埠。但這只是一個猜測。
uj5u.com熱心網友回復:
我會試試這個:
const httpOptions= {
hostname: "localhost",
port: 3000,
method: 'POST',
path: '/api/something',
headers: {
"Content-Type": "application/json",
}
}
uj5u.com熱心網友回復:
你不應該這樣宣告portor protocol。hostname像這樣修改你的httpOptions:
const httpOptions= {
hostname: "localhost",
port: 3000,
method: 'POST',
path: '/api/something',
headers: {
"Content-Type": "application/json",
}
}
httpOptions您可以在此處閱讀更多資訊: Node HTTP.request([options])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512291.html
