接口加速工具
填好左侧配置,右侧实时生成可直接部署的 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 地址。整个过程在你自己的账号里完成,本站只提供教程。
- 在免费 DNS 服务注册并添加一个子域前缀
- 记录类型选 CNAME,目标填你的 xxx.workers.dev 地址
- 保存生效后,用这个短域名访问即可