HTTP代理头注入工具

一个VS Code扩展,运行本地HTTP代理服务器,支持基于路径前缀的路由和自动请求头注入。

  • by dineshkumarsarangapani
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dineshkumarsarangapani/vs-code-plugin-header-injection-proxy-server-mcp

使用说明

头注入代理README

此VS Code扩展运行本地HTTP代理服务器,允许您将基于路径前缀的请求路由到不同的后端目标URL。对于每个目标,您可以将其配置为自动将自定义标头(如用于授权的API密钥)注入传出请求。

特性

  • 本地HTTP代理: 在可配置的本地端口上运行一个简单的HTTP代理服务器。
  • 基于路径的路由: 配置多个目标后端。发送到代理的请求(例如。, http://localhost:PORT/path/prefix/...)基于最长匹配被路由到相应的目标URL pathPrefix.
  • 集管注入: 对于每个目标,可选地配置API密钥(或任何值)、头名称(例如。, Authorization, X-API-Key)以及报头值前缀(例如。, ApiKey , Bearer )自动添加到代理到该目标的请求中。
  • 配置UI: 通过VS代码活动栏中的专用视图管理您的代理目标。添加、编辑和删除目标配置,无需手动编辑 settings.json。(添加/编辑/删除功能需要Webviews-实现可能正在等待中)。
  • 状态栏指示器: 在VS代码状态栏中显示代理服务器的当前状态(ON/OFF,端口)。
  • 自动重启: 当相关配置设置更改时,代理会自动重新启动。

(考虑在此处添加屏幕截图/GIF,显示目标视图和设置)

需求

  • Node.js (由 vsce 打包工具,并可能用于运行扩展主机)。

扩展设置

此扩展提供了以下设置(可通过UI或 settings.json):

  • headerInjectorProxy.proxyPort:(整数)代理服务器将侦听的本地端口(默认值: 8088).
  • headerInjectorProxy.targets:(对象数组)定义路由和标头注入规则。每个对象都有:
    • pathPrefix:(String,必填)代理上的URL路径前缀(例如。, /service1).必须从以下内容开始 /.
    • targetUrl:(String,必填)完整的目标后端URL(例如。, http://api.service1.com).
    • apiKey:(String|null,可选)要注入的API密钥(或其他值)。吃起来 null 或者如果该目标不需要注射,则省略。(标记为 secret 在设置中)。
    • headerName:(String,可选)要注入的标头的名称(默认值: Authorization).
    • headerPrefix:(String,可选)要在前面添加的前缀字符串 apiKey 在标题值中(默认值: ApiKey -包括尾随空格)。
    • stripPathPrefix:(布尔值,可选)如果设置为 true,the pathPrefix 在将请求转发到之前,将从请求URL中删除 targetUrl例如,如果 pathPrefix 是 /api 和 stripPathPrefix 是 true,请求 http://localhost:PORT/api/users 将转发给 targetUrl/users。(默认值: false).

示例 settings.json 配置:

{
    "headerInjectorProxy.proxyPort": 8088,
    "headerInjectorProxy.targets": [
        {
            "pathPrefix": "/service-alpha",
            "targetUrl": "http://api.alpha.internal:8000",
            "apiKey": "alpha-secret-key-123",
            "headerName": "X-Alpha-Key",
            "headerPrefix": "",
            "stripPathPrefix": false
        },
        {
            "pathPrefix": "/service-beta/v1",
            "targetUrl": "https://api.beta.example.com",
            "apiKey": "beta-secret-key-456",
            "stripPathPrefix": false
        },
        {
            "pathPrefix": "/strip-me",
            "targetUrl": "http://downstream.service/basepath",
            "apiKey": null,
            "stripPathPrefix": true
        }
    ]
}

已知问题

  • 目前仅代理HTTP请求。代理HTTPS请求 从 客户端不受支持。代理 向 HTTPS目标 是 支持。
  • 不支持Websocket代理。
  • 路径重写(例如,剥离 pathPrefix 转发之前)当前未实现;转发完整的请求路径。
  • UI中的添加/编辑/删除功能可能正在等待实现。

发布说明

0.0.1

  • 初始版本:基本HTTP代理、多目标路由、通过 settings.json.
  • 添加了UI视图以显示配置的目标。
  • 添加了基本的添加/编辑/删除命令(实施待定)。

享受!