根据给定任务,审查这个 AI 生成的解析与请求辅助函数。
请求用户提供的 HTTPS URL,缓存须遵守 DNS TTL,拒绝所有非公网 IPv4 或 IPv6 目标,保留 TLS 主机名验证,并限制查找与连接总时间。
JavaScript
import { Resolver } from "node:dns/promises";
import { setTimeout as delay } from "node:timers/promises";
const resolver = new Resolver();
const cache = new Map();
const ONE_HOUR = 60 * 60 * 1000;
export async function fetchUserUrl(input) {
const target = new URL(input);
const cached = cache.get(target.hostname);
if (cached) return fetch(input);
const [address] = await resolver.resolve4(target.hostname);
if (address.startsWith("127.")) throw new Error("blocked");
cache.set(target.hostname, { address, expires: Date.now() + ONE_HOUR });
return fetch(target);
}
setInterval(() => cache.clear(), ONE_HOUR);
生成代码仅作示例,不代表任何特定模型