ZetCode

JavaScript 代理

最后修改于 2023 年 10 月 18 日

在本教程中,我们将展示如何在 JavaScript 中创建和使用代理。

一个 代理 服务器是一个服务器应用程序,充当请求资源的客户端和提供该资源的服务器之间的中介。

代理用于各种原因,包括授权、匿名化、负载均衡和日志记录。

JS 代理示例

在我们的例子中,我们使用 Express 框架和 http-proxy 模块。 我们将向 webcode.me 网站发送一个简单的 HTTP GET 请求,该请求将通过基于本地 Express 的 Web 应用程序进行代理。

$ npm install express http-proxy

我们安装这两个模块。

server.js
const express = require('express');
const httpProxy = require('http-proxy');

const proxy = httpProxy.createProxyServer({});
const app = express();

app.get('*', (req, res) => {

    console.log('Request', req.method, req.url);
    proxy.web(req, res, { target: `${req.protocol}://${req.hostname}` });
});

app.listen(3000, () => console.log('Application started on port 3000'));

这是一个简单的 Express 应用程序,它记录请求并将其发送到最终目标。

app.get('*', (req, res) => {

    console.log('Request', req.method, req.url);
    proxy.web(req, res, { target: `${req.protocol}://${req.hostname}` });
});

所有请求都将被转发到最终目的地。 我们将请求详细信息记录到控制台。

client.js
const axios = require('axios');

async function doGetRequest() {

    const res = await axios.get('http://webcode.me', {

        proxy: {
            host: 'localhost',
            port: 3000
        }
    });

    console.log(res.data);
}


doGetRequest();

使用 Axios,我们创建一个 GET 请求到 http://webcode.me 网页。 它通过监听 localhost:3000 的代理发送。

$ node server.js 
Application started on port 3000

我们启动服务器应用程序。

$ node main.js 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="format.css">
    <title>My html page</title>
</head>
<body>

    <p>
        Today is a beautiful day. We go swimming and fishing.
    </p>
    
    <p>
         Hello there. How are you?
    </p>
    
</body>
</html>

我们创建一个 GET 请求并接收一个响应。 服务器将 Request GET http://webcode.me/ 消息记录到控制台。

来源

JS Proxy - 语言参考

在本文中,我们使用了 JavaScript 中的代理。

作者

我的名字是 Jan Bodnar,我是一个充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

查看 所有 JavaScript 教程。