Để tránh các sự cố AJAX cùng tên miền, tôi muốn máy chủ web node.js của tôi chuyển tiếp tất cả các yêu cầu từ URL /api/BLABLA
sang máy chủ khác, ví dụ:other_domain.com:3000/BLABLA
, và trả lại cho người dùng điều tương tự mà máy chủ từ xa này trả lại, trong suốt.
Tất cả các URL khác (bên cạnh /api/*
) sẽ được phục vụ trực tiếp, không ủy quyền.
Làm cách nào để đạt được điều này với node.js + express.js? Bạn có thể đưa ra một ví dụ mã đơn giản?
(cả máy chủ web và máy chủ từ xa 3000
đều nằm dưới sự kiểm soát của tôi, cả chạy node.js với express.js)
Cho đến nay tôi đã tìm thấy https://github.com/http-party/node-http-proxy này , nhưng đọc tài liệu ở đó không làm cho tôi khôn ngoan hơn. Tôi đã kết thúc với
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
});
});
nhưng không có gì được trả về máy chủ web gốc (hoặc cho người dùng cuối), vì vậy không có may mắn.