Untuk menghindari masalah AJAX dengan domain yang sama, saya ingin server web node.js saya meneruskan semua permintaan dari URL /api/BLABLA
ke server lain, misalnya other_domain.com:3000/BLABLA
, dan mengembalikan kepada pengguna hal yang sama dengan yang dilakukan oleh server jauh ini, secara transparan.
Semua URL lain (di sebelah /api/*
) harus dilayani secara langsung, tanpa proxy.
Bagaimana cara mencapai ini dengan node.js + express.js? Bisakah Anda memberikan contoh kode sederhana?
(server web dan server jarak jauh 3000
berada di bawah kendali saya, keduanya menjalankan node.js dengan express.js)
Sejauh ini saya menemukan ini https://github.com/http-party/node-http-proxy , tetapi membaca dokumentasi di sana tidak membuat saya lebih bijak. Saya berakhir dengan
var proxy = new httpProxy.RoutingProxy();
app.all("/api/*", function(req, res) {
console.log("old request url " + req.url)
req.url = '/' + req.url.split('/').slice(2).join('/'); // remove the '/api' part
console.log("new request url " + req.url)
proxy.proxyRequest(req, res, {
host: "other_domain.com",
port: 3000
});
});
tetapi tidak ada yang dikembalikan ke server web asli (atau ke pengguna akhir), jadi tidak berhasil.