給定URL X的GET請求,應該如何定義res.send以便它對完全獨立的URL Y提供響應?如何在Node.js/Express中res.send到一個新的URL?
即
app.get('/', function (req, res) {
res.send to a new URL external of the app ('Success')
});
感謝,並提前道歉的話題無知!
給定URL X的GET請求,應該如何定義res.send以便它對完全獨立的URL Y提供響應?如何在Node.js/Express中res.send到一個新的URL?
即
app.get('/', function (req, res) {
res.send to a new URL external of the app ('Success')
});
感謝,並提前道歉的話題無知!
您只能響應請求源,它是客戶端。沒有響應另一個「外部URL」(或另一臺服務器)的事情。
但是,您可以向另一臺服務器發出請求,等待它的響應並響應我們的客戶端。
app.get('/', (req, res) => {
var requestOptions = {
hostname: 'serverB.com', //url or ip address
port: 8080, //default to 80 if not provided
path: '/take-request',
method: 'POST' //HTTP Method
};
var exernalRequest = http.request(requestOptions, (externalResponse) => {
//ServerB done responding
externalResponse.on('end',() => {
//Response to client
res.end('data was send to serverB');
});
);
// Free to send anthing to serverB
externalRequest.write(req.data);
externalRequest.end();
});
雖然這個答案是正確的,但我認爲值得一提的是,在正常情況下,您可能會做這件事,因爲它可能會侵犯版權,並且知道其他法律難題。更不用說在邏輯上不正確(顯示響應bar_url的foo_url的內容)。 IMO真正想要的是重定向,IMO。 – Bill
如果您擁有兩臺服務器,沒有法律問題,對嗎?就像在微服務系統中一樣。 – rocketspacer
我認爲OP意味着發送數據(響應)到另一個「外部網址」不重定向到 – rocketspacer
您希望通過設置狀態碼並提供位置標題來重定向請求。 302表示臨時重定向,301是永久重定向。
app.get('/', function (req, res) {
res.statusCode = 302;
res.setHeader("Location", "http://www.url.com/page");
res.end();
});
您的意思是說有一條路線在完成時重定向到另一條路線? –
嗨馬修,下面的答案有幫助嗎?如果你覺得其中一個人回答了你的問題,我相信他們會很感激你的回答是否正確。如果您仍然需要幫助,只需在此處或其答覆之一發表評論! – Bill
對不起,澄清 - 我不想將請求本身重定向到另一個URL。 當GET請求進入指定的路由時,我想完全觸發一個POST到另一個URL,在主體中提供GET請求中的一些數據,但不是請求本身。 從下面的答案中可以看出,外部URL的POST不在(req,res)中,而是作爲單獨的,已定義的請求發生。原因是res只能傳回請求源 - 如果我正確理解了@ rocketspacer! –