接口加速工具

填好左侧配置,右侧实时生成可直接部署的 Cloudflare Worker 转发代码。整个过程在你的浏览器里完成。

绝对私密——你的 Key 不会离开浏览器:代码在本地生成,不会上传到 mindrive.cc。
worker.js
// Mindrive 接口加速 Worker
// 本文件由 mindrive.cc/tools 在你的浏览器本地生成,你的 Key 不会上传到 mindrive.cc。
// 部署:Cloudflare Dashboard -> Workers -> 创建 Worker -> 粘贴本代码 -> 部署。
//
// 安全建议:把下面 UPSTREAM_API_KEY 的明文删除,改在 Worker 后台
// Settings -> Variables and Secrets 添加同名变量 UPSTREAM_API_KEY,代码会优先读取它。

const UPSTREAM_API_KEY = "";
const UPSTREAM = "https://integrate.api.nvidia.com";
const PATH_PREFIX = "/v1";
const ENABLE_CORS = true;
const STREAMING = true;
const ACCESS_TOKEN = "";

function buildCorsHeaders() {
  const h = new Headers();
  h.set("Access-Control-Allow-Origin", "*");
  h.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
  h.set("Access-Control-Allow-Headers", "Authorization, Content-Type");
  h.set("Access-Control-Max-Age", "86400");
  return h;
}

function jsonError(status, message) {
  const body = JSON.stringify({ error: { message: message, type: "proxy_error" } });
  const headers = new Headers({ "Content-Type": "application/json" });
  if (ENABLE_CORS) {
    const c = buildCorsHeaders();
    c.forEach(function (v, k) { headers.set(k, v); });
  }
  return new Response(body, { status: status, headers: headers });
}

export default {
  async fetch(request, env) {
    // 优先读取 Worker 后台配置的同名环境变量,回退到代码内常量
    // 新版统一使用 UPSTREAM_API_KEY;继续兼容旧版 NVIDIA_API_KEY 环境变量。
    const apiKey = (env && (env.UPSTREAM_API_KEY || env.NVIDIA_API_KEY))
      ? (env.UPSTREAM_API_KEY || env.NVIDIA_API_KEY)
      : UPSTREAM_API_KEY;

    // CORS 预检
    if (ENABLE_CORS && request.method === "OPTIONS") {
      return new Response(null, { status: 204, headers: buildCorsHeaders() });
    }

    const url = new URL(request.url);

    // 仅转发指定前缀下的请求
    if (PATH_PREFIX && PATH_PREFIX !== "/" && !url.pathname.startsWith(PATH_PREFIX)) {
      return jsonError(404, "路径不在转发前缀范围内");
    }

    // 访问鉴权(可选):校验访问者携带的 Bearer Token
    if (ACCESS_TOKEN) {
      const auth = request.headers.get("Authorization") || "";
      const token = auth.replace(/^Bearer\s+/i, "").trim();
      if (token !== ACCESS_TOKEN) {
        return jsonError(401, "访问令牌无效");
      }
    }

    if (!apiKey) {
      return jsonError(500, "未配置上游密钥");
    }

    // 组装上游地址:上游域名 + 原始路径 + 查询串
    const target = UPSTREAM.replace(/\/+$/, "") + url.pathname + url.search;

    // 透传请求头;用上游密钥覆盖 Authorization,剥离 Cloudflare 专有头
    const headers = new Headers(request.headers);
    headers.set("Authorization", "Bearer " + apiKey);
    headers.delete("Host");
    headers.delete("cf-connecting-ip");
    headers.delete("cf-ray");

    const init = {
      method: request.method,
      headers: headers,
      body: (request.method === "GET" || request.method === "HEAD") ? undefined : request.body,
    };
    // 转发请求体需要半双工标记
    if (init.body) { init.duplex = "half"; }

    let upstreamResp;
    try {
      upstreamResp = await fetch(target, init);
    } catch (e) {
      return jsonError(502, "上游请求失败");
    }

    // 构造返回头(不回写任何密钥)
    const respHeaders = new Headers(upstreamResp.headers);
    if (ENABLE_CORS) {
      const c = buildCorsHeaders();
      c.forEach(function (v, k) { respHeaders.set(k, v); });
    }

    if (STREAMING) {
      // 直接透传响应体,保持 text/event-stream 流式不缓冲
      return new Response(upstreamResp.body, { status: upstreamResp.status, headers: respHeaders });
    }
    const buffered = await upstreamResp.arrayBuffer();
    return new Response(buffered, { status: upstreamResp.status, headers: respHeaders });
  },
};

给你的 Worker 配一个短域名

Worker 默认带有 workers.dev 地址即可直接使用。如果你想换成更短、更好记的域名, 可以在免费 DNS 服务(如 dnshe.com)或你自己的域名上,添加一条 CNAME 记录指向你的 workers.dev 地址。整个过程在你自己的账号里完成,本站只提供教程。

  1. 在免费 DNS 服务注册并添加一个子域前缀
  2. 记录类型选 CNAME,目标填你的 xxx.workers.dev 地址
  3. 保存生效后,用这个短域名访问即可
查看完整自助配置教程 →