>  기사  >  웹 프론트엔드  >  Node.js에서 라우팅 구성 요소를 사용하여 프록시를 구성하는 방법

Node.js에서 라우팅 구성 요소를 사용하여 프록시를 구성하는 방법

PHPz
PHPz원래의
2023-04-17 16:43:531121검색

프런트 엔드 개발이 발전함에 따라 점점 더 많은 애플리케이션이 API 인터페이스를 통해 백엔드 서버와 통신해야 합니다. 그러나 개발자가 직면한 한 가지 문제는 교차 사이트 공격을 방지하기 위해 보안상의 이유로 브라우저에서 도입한 메커니즘인 교차 출처 제한을 우회하는 방법입니다.

프록시는 출처 간 제한을 해결하는 일반적인 방법입니다. 브라우저의 요청을 프록시 서버로 보내고 프록시 서버가 요청을 실제 인터페이스 주소로 전달함으로써 교차 출처 제한을 우회하고 인터페이스에 액세스할 수 있습니다. 이 기사에서는 Node.js의 라우팅 구성 요소를 사용하여 프록시를 구성하는 방법을 다룹니다.

프록시 구성 옵션

Node.js에는 프록시를 구성하는 여러 옵션이 있습니다. Express를 예로 들면 일반적으로 사용되는 솔루션은 다음과 같습니다.

  1. http-proxy-middleware 플러그인 사용
  2. 사용자 정의 미들웨어 구현
  3. Node.js와 함께 제공되는 http 모듈 사용

여기서 기사, 우리는 첫 번째 옵션을 소개합니다.

1. 플러그인 설치

프록시 기능을 구현하려면 http-proxy-middleware 플러그인을 설치해야 합니다.

$ npm install http-proxy-middleware --save-dev

2. 라우팅 및 프록시 구성

Express에서는 express.Router() 메서드를 사용하여 라우팅 인스턴스를 생성할 수 있습니다. 각 라우팅 인스턴스에 대해 프록시를 구성할 수 있습니다.

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const router = express.Router();

// 配置代理
router.use('/api', createProxyMiddleware({ 
   target: 'http://www.example.com', 
   changeOrigin: true 
}));

app.use(router);

// 启动服务器
const server = app.listen(3000, () => {
   const { address, port } = server.address(); 
   console.log(`Listening on http://${address}:${port}`);
});

위 코드는 경로를 구성하여 라우팅 주소가 /api인 요청을 http://www.example.com 주소로 프록시합니다.

createProxyMiddleware에서는 여러 옵션을 구성하여 프록시 구성을 사용자 정의할 수 있습니다. 예를 들어, pathRewrite 옵션을 사용하여 실제 인터페이스 주소와 일치하도록 라우팅 주소에서 /api 접두사를 제거하도록 경로를 다시 작성할 수 있습니다.

router.use('/api', createProxyMiddleware({ 
   target: 'http://www.example.com', 
   changeOrigin: true, 
   pathRewrite: { '^/api': '' } 
}));

위 코드는 프록시 뒤의 경로에서 /api 접두사를 제거합니다.

3. 인터셉터 구성

프록시 구성 외에도 인터셉터를 구성하여 프록시 동작을 맞춤 설정할 수도 있습니다. 인터셉터는 요청과 응답을 처리하는 데 사용됩니다. 예를 들어 요청이 시작되기 전에 헤더 정보를 추가하거나 요청 응답 후에 반환 값을 처리할 수 있습니다.

http-proxy-middleware에서는 onProxyReq 및 onProxyRes 두 가지 옵션을 통해 인터셉터를 구성할 수 있습니다.

//
router.use('/api', createProxyMiddleware({
   target: 'http://www.example.com',
   changeOrigin: true,
   onProxyReq: (proxyReq, req, res) => {
      // 在请求发起前添加头部信息
      proxyReq.setHeader('Authorization', 'Bearer ' + token);
   },
   onProxyRes: (proxyRes, req, res) => {
      // 在响应返回后处理返回值
      const data = proxyRes.body.toString('utf8');
      const newData = JSON.parse(data).result;
      res.send(newData);
   }
}));

위 코드에서는 onProxyReq에 Authorization이라는 헤더 정보를 추가하고 onProxyRes에서 반환 값을 처리했습니다.

Summary

위의 소개를 통해 http-proxy-middleware 플러그인을 사용하여 라우팅 프록시 기능을 구현하는 방법을 배웠고, 미들웨어를 통해 구현하는 방법도 배웠습니다. 또한 요청과 응답을 처리하도록 인터셉터를 구성하는 방법도 배웠습니다.

Node.js는 프록시 기능을 구현하는 데 도움이 되는 다양한 편리한 도구를 제공하여 개발자가 애플리케이션을 빠르게 구축하고 배포하는 데 도움을 줍니다. 이 기사가 백엔드 개발 작업에서 프록시를 사용하여 사이트 간 통신 문제를 해결하는 데 도움이 되기를 바랍니다.

위 내용은 Node.js에서 라우팅 구성 요소를 사용하여 프록시를 구성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.