短网址还原 在线工具核心JS实现

简介: 本工具由Vue开发,专注短网址还原:输入短链→规范URL→手动探测重定向(HEAD/GET双策略)→补全相对路径→返回可复制长链。支持错误兜底、多浏览器复制兼容,状态清晰、流程稳定。

这篇只讲“短网址还原”工具的功能层 JavaScript 实现。工具由我用 Vue 开发,核心目标是把短链接还原成真实地址,并把状态结果清晰返回给页面。

整体链路可以概括成:

输入短链 -> URL规范化 -> 请求还原接口 -> 探测重定向 -> 返回长链接 -> 前端展示与复制

在线工具网址:https://see-tool.com/short-url-restore
工具截图:
工具截图.png

1)先统一 URL,避免无效输入进入流程

前端和服务端都做了 URL 规范化:去空格、补协议、限制协议类型。

function normalizeUrl(input) {
   
  const rawValue = String(input || "").trim();
  if (!rawValue) return "";

  const withProtocol = /^https?:\/\//i.test(rawValue)
    ? rawValue
    : `http://${
     rawValue}`;

  try {
   
    const target = new URL(withProtocol);
    if (!["http:", "https:"].includes(target.protocol)) return "";
    return target.toString();
  } catch {
   
    return "";
  }
}

这样像 t.cn/xxxx 这类输入会先转成可请求格式,非法链接会在入口直接拦截。

2)重定向探测的核心:manual + HEAD/GET 双策略

短链还原的关键不是“访问页面内容”,而是拿到跳转位置(Location)。

实现里请求时关闭自动跳转,手动读取响应头:

async function requestRedirect(shortUrl, method) {
   
  const response = await fetchWithTimeout(
    shortUrl,
    {
   
      method,
      redirect: "manual",
      headers: BUILD_HEADERS,
    },
    30000,
  );

  return {
   
    status: response.status,
    location:
      response.headers.get("location") ||
      response.headers.get("x-redirect-location") ||
      "",
  };
}

然后做一次策略兜底:先 HEAD,拿不到跳转或服务端不支持时再切 GET

async function fetchRedirectInfo(shortUrl) {
   
  const headResult = await requestRedirect(shortUrl, "HEAD");
  if (headResult.location) return headResult;
  if (headResult.status === 405) return await requestRedirect(shortUrl, "GET");
  if (headResult.status < 400) return await requestRedirect(shortUrl, "GET");
  return headResult;
}

这一步能覆盖很多短链服务的差异行为,减少“明明可跳转却还原失败”的情况。

3)把相对跳转地址补全成可直接打开的长链接

有些服务返回的 Location 可能是相对路径,不是完整 URL。这里用基准地址做拼接:

function resolveLocation(location, baseUrl) {
   
  try {
   
    return new URL(location, baseUrl).toString();
  } catch {
   
    return location;
  }
}

这样前端拿到的结果始终可读、可复制、可直接打开。

4)返回数据结构保持稳定,前端展示更简单

服务端输出统一结构:

  • 有跳转:shortUrl + longUrl + statusCode
  • 无跳转但请求成功:longUrl 等于 shortUrl
  • 上游异常:返回错误消息

前端只要判断 status 是否为 ok,就能决定展示结果卡片还是错误提示,不需要写复杂分支。

5)Vue 侧交互状态围绕“一次还原”组织

页面核心状态主要有:

  • urlInput:输入框内容
  • isLoading:请求中状态
  • resultData:还原结果
  • errorMessage:错误提示
  • copied:复制反馈状态

触发还原时,流程是:校验输入 -> 规范化 -> 清空旧结果 -> 发请求 -> 写入结果或错误。

async function restoreShortUrlInternal(url) {
   
  const response = await fetch("/api/short-url-restore", {
   
    method: "POST",
    headers: {
    "Content-Type": "application/json" },
    body: JSON.stringify({
    url }),
  });

  const data = await response.json();
  if (!response.ok || data.status !== "ok") {
   
    throw new Error(data.message || "restore failed");
  }

  return data.data;
}

这套状态流让页面行为比较稳定:请求开始时按钮进入加载态,请求结束后统一收口到结果或提示。

6)复制功能做了兼容回退

结果里最常用的是“复制长链接”。实现优先使用 navigator.clipboard,失败时回退到 textarea + execCommand('copy'),保证常见浏览器环境下都能完成复制。

async function copyTextToClipboard(text) {
   
  try {
   
    await navigator.clipboard.writeText(text);
    return true;
  } catch {
   
    const textarea = document.createElement("textarea");
    textarea.value = text;
    textarea.style.position = "fixed";
    textarea.style.opacity = "0";
    document.body.appendChild(textarea);
    textarea.select();
    document.execCommand("copy");
    document.body.removeChild(textarea);
    return true;
  }
}

对用户来说,点击复制后能立即得到成功反馈,操作路径很短。

短网址还原这个工具的核心 JS,本质上是在做一条稳定的数据处理流水线:输入规范化、重定向探测、结果标准化、前端状态收口。用 Vue 承接这条链路后,交互和结果都能保持一致。

目录
相关文章
|
5天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10730 63
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
5天前
|
人工智能 IDE API
2026年国内 Codex 安装教程和使用教程:GPT-5.4 完整指南
Codex已进化为AI编程智能体,不仅能补全代码,更能理解项目、自动重构、执行任务。本文详解国内安装、GPT-5.4接入、cc-switch中转配置及实战开发流程,助你从零掌握“描述需求→AI实现”的新一代工程范式。(239字)
3104 126
|
1天前
|
人工智能 自然语言处理 供应链
【最新】阿里云ClawHub Skill扫描:3万个AI Agent技能中的安全度量
阿里云扫描3万+AI Skill,发现AI检测引擎可识别80%+威胁,远高于传统引擎。
1197 1
|
11天前
|
人工智能 JavaScript API
解放双手!OpenClaw Agent Browser全攻略(阿里云+本地部署+免费API+网页自动化场景落地)
“让AI聊聊天、写代码不难,难的是让它自己打开网页、填表单、查数据”——2026年,无数OpenClaw用户被这个痛点困扰。参考文章直击核心:当AI只能“纸上谈兵”,无法实际操控浏览器,就永远成不了真正的“数字员工”。而Agent Browser技能的出现,彻底打破了这一壁垒——它给OpenClaw装上“上网的手和眼睛”,让AI能像真人一样打开网页、点击按钮、填写表单、提取数据,24小时不间断完成网页自动化任务。
2561 6
|
25天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
24380 122