동일한 도메인 AJAX 문제를 피하기 위해 node.js 웹 서버가 URL의 모든 요청 /api/BLABLA
을 다른 서버 로 전달 other_domain.com:3000/BLABLA
하고이 원격 서버가 투명하게 반환 한 것과 동일한 것을 사용자에게 반환하기를 원합니다 .
다른 모든 URL ( /api/*
)은 프록시없이 직접 제공됩니다.
node.js + express.js로 어떻게 이것을 달성합니까? 간단한 코드 예제를 줄 수 있습니까?
(웹 서버와 원격 3000
서버 모두 내 제어하에 있으며 모두 express.js로 node.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
});
});
그러나 원래 웹 서버 (또는 최종 사용자)에게 아무것도 반환되지 않으므로 운이 없습니다.