เพื่อหลีกเลี่ยงปัญหา AJAX ในโดเมนเดียวกันฉันต้องการให้ node.js เว็บเซิร์ฟเวอร์ของฉันส่งต่อคำขอทั้งหมดจาก URL /api/BLABLA
ไปยังเซิร์ฟเวอร์อื่นother_domain.com:3000/BLABLA
และกลับสู่ผู้ใช้ในสิ่งเดียวกันกับที่รีโมตเซิร์ฟเวอร์นี้ส่งคืนโดยโปร่งใส
URL อื่น ๆ ทั้งหมด (ด้านข้าง/api/*
) จะต้องให้บริการโดยตรงไม่ต้องใช้ผู้รับมอบฉันทะ
ฉันจะบรรลุสิ่งนี้ด้วย node.js + express.js ได้อย่างไร คุณสามารถยกตัวอย่างรหัสง่ายๆได้หรือไม่?
(ทั้งเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ระยะไกล3000
อยู่ภายใต้การควบคุมของฉันทั้งสองทำงานอยู่ node.js กับ express.js)
จนถึงตอนนี้ฉันพบhttps://github.com/http-party/node-http-proxyแต่การอ่านเอกสารมีไม่ได้ทำให้ฉันฉลาดขึ้น ฉันลงเอยด้วย
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
});
});
แต่ไม่มีสิ่งใดถูกส่งคืนไปยังเว็บเซิร์ฟเวอร์ดั้งเดิม (หรือผู้ใช้ปลายทาง) ดังนั้นจึงไม่มีโชค