![](/img/trans.png)
[英]Node.js + request - saving a remote file and serving it in a response
[英]Node.js serving a HTML file on a remote network
我是Node.js新手,所以我不確定是否有可能做我想完成的事情。 這是我的配置:
我的家庭網絡上的Raspberry Pi上運行着一個Node.js服務器。 我在外部IP上有一個HTML文件。 我希望在此HTML文件上呈現React組件。
據我所知,人們已經使用Node服務器在本地HTML文件上顯示js,因此該路徑通常看起來像這樣,假設目錄名為“ dir”:
const express = require('express');
const app = express();
// Static Routes
app.use('/dist', express.static(path.join(__dirname, 'dir')));
// App Route
app.get('/', (req, res, next) => res.sendFile(path.join(__dirname,
'index.html')));
據我所知,該文件將傳輸在先前指定的路徑中找到的HTML文件。 但是,這轉移到了哪里? 我可以基於外部IP +用戶+密碼以及文件路徑指定路徑名嗎?
對於存儲在遠程計算機上的文件,您無法直接實現它。 Express靜態路徑僅適用於本地文件系統。
可能的方法是,每次收到新請求時從遠程計算機獲取文件。 但是沒有人這樣做。
據我所知,該文件將傳輸在先前指定的路徑中找到的HTML文件。 但是,這轉移到了哪里?
當客戶端請求文件內容時(即不在服務器啟動時),它將文件內容從磁盤傳輸到客戶端的網絡連接。
我可以基於外部IP +用戶+密碼以及文件路徑指定路徑名嗎?
不能與express.static
。 如果要使服務器為外部頁面服務(代理),可以執行以下操作: https : //stackoverflow.com/a/10435819/7011366 。 由於您可以訪問url和cookie,因此您可以使用路徑/用戶/密碼進行任何操作。
app.post('/my_url', function(req, res) {
var options = {
host: MY_DOMAIN,
path: '/' + req.query.username,
method: 'GET',
};
var req = http.request(options, function(res) {
// etc...
// send response to client
}).on('error', function(e) {
// handle error...
}).end();
});
上面的示例在每個請求中都向外部頁面發出一個請求。 如果您不希望這樣做,可以將其存儲在內存中,並僅定期進行更新。
let myHtml = "";
let fn = () => {
var options = {
host: MY_DOMAIN,
path: '/' + req.query.username,
method: 'GET',
};
var req = http.request(options, function(res) {
// etc...
// save response to myHtml as string
}).on('error', function(e) {
// handle error...
}).end();
};
setInterval(fn, 60000);
fn();
app.post('/my_url', function(req, res) {
res.end(myHtml);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.