HTTP状态查询 在线工具核心JS实现

简介: 本文详解“HTTP状态查询”工具的前端JS实现:支持URL规范化、手动逐跳探测重定向链、提取状态码/响应头/页面标题/IP/耗时等信息,并智能归纳结果。代码清晰,注重用户体验与健壮性。

这篇文章只讲本项目里“HTTP状态查询”工具的功能 JavaScript 实现。它的目标很明确:用户输入一个网址后,返回当前状态码、重定向链路、响应头、页面标题、IP 和耗时等信息。

在线工具网址:https://see-tool.com/http-status-query
工具截图:
工具截图.png

整个实现可以拆成 4 段:输入规范化、请求触发、服务端逐跳探测、结果整理展示。

1)输入先做规范化

这个工具不会直接拿用户原始输入去请求,而是先统一处理:

  • 去掉首尾空格和中间多余空白
  • 如果没写协议,自动补上 http://
  • URL 构造函数校验格式
  • 只允许 httphttps

这样做的好处是,像 example.comhttps://example.com 这种输入都能被转换成稳定可请求的地址,非法内容则会被提前拦下。

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

  const cleaned = rawValue.replace(/\s+/g, "");
  const withProtocol = /^https?:\/\//i.test(cleaned)
    ? cleaned
    : `http://${
     cleaned}`;

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

2)前端状态围绕“查询过程”设计

前端没有把逻辑拆得很散,而是直接围绕一次查询需要的状态来组织:

  • urlInput:输入框内容
  • isLoading:是否正在查询
  • errorMessage:错误提示
  • resultData:接口返回的完整结果
  • pendingUrl:当前准备发送的规范化 URL

结果展示时,再通过计算属性把 resultData 拆成页面标题、结果列表和摘要文案。这样界面层只负责渲染,不需要重复处理原始数据。

3)服务端核心是“手动接管跳转链”

真正的核心不在于请求一次 URL,而在于把每一跳都查出来。实现上使用循环逐跳请求,并把 redirect 设为 manual,这样程序不会自动跟随跳转,而是自己读取 Location,再决定下一跳。

const isRedirectStatus = (statusCode) =>
  [301, 302, 303, 307, 308].includes(statusCode);

for (let i = 0; i <= MAX_REDIRECTS; i += 1) {
   
  if (visited.has(currentUrl)) break;
  visited.add(currentUrl);

  const {
    result, title: pageTitle } = await requestOnce(currentUrl, i + 1);
  results.push(result);

  if (!isRedirectStatus(result.code) || !result.location) {
   
    break;
  }

  currentUrl = new URL(result.location, currentUrl).toString();
}

这里有两个关键点:

  • visited 记录已经访问过的地址,避免循环跳转
  • new URL(result.location, currentUrl) 兼容相对跳转地址

所以用户最后看到的不是单个状态码,而是一整条请求链路。

4)单次请求会提取多种信息

每请求一跳,都会同时收集一组结构化结果:

  • codestatusText
  • contentType
  • cacheControl
  • responseDate
  • server
  • location
  • totalTime
  • head(原始响应头文本)

耗时的计算方式也很直接:请求前记开始时间,响应结束后减一次时间戳,最后拼成 123ms 这种格式。

5)页面标题不是直接取字符串,而是先按内容类型解码

如果响应是 HTML,工具还会继续读取正文前一部分内容,用于提取页面 <title>。这里有两个步骤:

第一步,先根据 content-type 里的 charset 选择解码方式;第二步,再从 HTML 里匹配标题标签。

const extractTitleFromHtml = (html) => {
   
  const match = html.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
  if (!match) return "";
  return match[1].replace(/\s+/g, " ").trim();
};

这样即使页面不是 UTF-8,只要响应头里带了字符集,标题也能尽量正确显示。

6)IP 和端口信息来自额外解析

HTTP 响应本身不会直接告诉你目标域名解析到了哪个 IP,所以这里额外做了一次域名解析。协议是 https 时默认端口记为 443,否则记为 80。这样结果里除了状态码,还能把访问目标的基础网络信息一起展示出来。

7)前端会再做一层结果归纳

查询结果返回后,前端不是机械地把数组打印出来,而是根据最后一个状态码和是否发生重定向,生成更容易理解的摘要:

  • 2xx:访问成功
  • 3xx 且有跳转:发生重定向
  • 4xx:客户端错误
  • 5xx:服务器错误

同时还会按状态码给文字加不同颜色,让用户一眼区分成功、跳转和异常结果。

8)这套实现的关键点

这个工具的功能 JS,本质上是在做一条清晰的数据链:

输入 URL -> 规范化 -> 逐跳请求 -> 提取状态与响应头 -> 解析标题/IP/耗时 -> 生成可读结果

从实现角度看,最关键的不是“发起请求”本身,而是把跳转链、响应头、标题和状态归纳成一份普通用户也能看懂的结果。这也是这个 HTTP状态查询 工具的核心实现思路。

目录
相关文章
|
24天前
|
人工智能 安全 API
OpenClaw(Clawdbot)阿里云/本地部署实战指南:百炼API配置流程 + 8个必装核心 Skill 详解
OpenClaw(原Clawdbot)作为2026年开源AI Agent领域的热门工具,其核心竞争力在于丰富的Skill生态系统。ClawHub作为官方技能商店,已收录13,000余个Skill,但其中多数需要编程基础或海外网络环境,普通用户难以直接使用。经过实测筛选,8个高频实用Skill脱颖而出——无需代码能力、零配置即可上手,覆盖技能发现、偏好记忆、内容总结、日常管理等核心场景,真正实现“装上就用”。
456 7
|
8天前
|
人工智能 弹性计算 运维
别再只聊天了!OpenClaw(养龙虾)让AI自己工作,附部署教程!
OpenClaw(“养龙虾”)是开源AI智能体框架,赋予AI“手和脚”——可读写文件、操作浏览器、执行系统命令。告别只聊天的AI,实现周报自动生成发送、数据抓取、多平台协同等真自动化。本地/云端一键部署,安全可控,让AI真正替你干活!
557 14
|
8天前
|
人工智能 Linux API
OpenClaw 阿里云秒级部署保姆级教程:从0到1搭建7×24小时AI助手
2026年3月,OpenClaw(原Clawdbot)凭借其轻量化架构、丰富技能生态与大模型适配能力,成为个人与小型团队搭建AI助手的首选方案。阿里云提供专属应用镜像与一键部署能力,可实现“秒级上线”,搭配百炼Coding Plan免费大模型API,无需本地算力即可拥有7×24小时在线的AI智能体。本文提供从服务器选购、端口放行、一键部署、模型配置到本地MacOS/Linux/Windows11联动的全流程保姆级教程,所有命令可直接复制执行,无冗余步骤,零基础也能一次成功。
297 11
|
21天前
|
JavaScript
HTTP状态查询 在线工具分享
遇到网页打不开、跳转异常或报错?试试「HTTP状态查询」在线工具!无需安装,输入网址即可秒查状态码(200/301/404/500等)、跳转路径、响应头及耗时,帮普通用户快速定位问题。简洁直观,一看就懂!
177 5
|
21天前
|
人工智能 缓存 数据库
Hagicode 多 AI 提供者切换与互操作实现方案
Hagicode 实现多 AI 提供者(Claude Code CLI / Codex CLI 等)无缝切换与互操作:通过 Provider 模式抽象接口、工厂动态创建、智能选择器按场景/健康度自动路由,并统一管理流式响应、工具调用及会话状态,支持扩展与桌面集成。
180 11
|
21天前
|
API Docker 异构计算
大模型应用:大模型本地化部署与API调用:打包迁移到服务器的多种方式实践.47
本文详解大模型从本地运行到云端API服务的全链路部署:涵盖硬件要求(GPU/CPU/内存)、软件环境(Python/FastAPI/Transformers)、模型选型(Qwen/ChatGLM等),并提供脚本部署、EXE打包(PyInstaller)和Docker容器化三种方案,支持局域网调用与接口文档自动生成,助力零基础用户快速实现“开箱即用”的稳定API服务。
745 25
|
2天前
|
SQL 前端开发 Java
【分层架构】Spring MVC三层架构 / DDD领域驱动四层架构 / 微服务分布式架构(DAO/Mapper/Repository/Service/Controller/Manager)
本文系统解析Java企业级分层架构(Controller/Service/Manager/Repository/DAO/Mapper),阐明各层职责边界、设计原则与典型误区,强调单一职责、依赖倒置、关注点分离等核心思想,助力构建高内聚、低耦合、易维护的可扩展系统。
138 11
|
21天前
|
人工智能 前端开发 Serverless
基于阿里云Qwen3构建AI聊天助手(新手图文教程)
阿里云正式开源Qwen3系列大模型,含2款MoE与6款Dense模型(0.6B–235B),支持119种语言、思考/非思考双模式。依托函数计算FC,提供vLLM/SGLang等部署方案,新手可快速体验AI聊天助手。首月Coding Plan低至7.9元。
557 20
|
21天前
|
人工智能 运维 自然语言处理
XgenCore Works V2.7.9(玄晶引擎)升级公告 赋能云原生开发者高效落地
XgenCore Works V2.7.9(玄晶引擎)正式发布,聚焦PC端内容创作、企业独立部署运维、自动化视频生成三大场景,新增6项功能(含数字人口播混剪入口、智能体统一管理等),修复14项高频Bug,全面提升兼容性、稳定性与实操体验,深度适配阿里云开发者及企业用户需求。
148 21
|
16天前
|
人工智能 Kubernetes 安全
最新!云上openclaw“养虾”服务指南来了
阿里云推出OpenClaw“云上养虾”全栈指南:轻量服务器一键部署、PAI平台智能开发、Agentbay企业托管、MobileClaw安卓版及ACS沙箱环境,覆盖个人、开发者与企业需求,安全、便捷、实用。
801 10

热门文章

最新文章