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状态查询 工具的核心实现思路。

目录
相关文章
|
JSON Java API
深拷贝、浅拷贝
深拷贝、浅拷贝
467 0
|
1月前
|
JavaScript
HTTP状态查询 在线工具分享
遇到网页打不开、跳转异常或报错?试试「HTTP状态查询」在线工具!无需安装,输入网址即可秒查状态码(200/301/404/500等)、跳转路径、响应头及耗时,帮普通用户快速定位问题。简洁直观,一看就懂!
336 5
|
2月前
|
算法 JavaScript 安全
SHA在线加密工具分享
这是一款基于Vue开发的SHA在线加密工具,纯前端运行,数据不上传,保障隐私。支持实时生成SHA-1/256等摘要,适用于密码哈希、文件校验、接口签名等场景,开箱即用,无需安装。
793 5
|
2月前
|
JavaScript
网页源代码查看 在线工具分享
一款基于Vue 3的在线网页源码查看工具,无需安装,支持PC/手机访问。可快速查看HTML源码、提取纯文本、抓取链接、分析表单,并提供User-Agent等进阶参数设置,操作简洁、响应迅速,适合内容校对与页面排查。
2229 5
|
2月前
|
分布式计算 JavaScript 前端开发
MD5在线加密 核心JS实现
本工具基于纯JS实现MD5在线加密,支持文本/文件输入,统一转为字节序列后计算MD5。兼容text/base64/hex等多种格式解析,输出可选hex(含空格分隔)、base64及大小写切换,文件支持分片读取与进度显示。
407 1
|
3月前
|
安全 算法 项目管理
日期计算器在线工具分享
这是一款基于Vue3开发的免费在线日期计算器,支持日期加减、天数差值、工作日计算及星期查询。界面简洁、操作便捷、结果精准,所有计算均在本地完成,保障隐私安全,无需注册即可跨设备使用。
1037 4
日期计算器在线工具分享
|
3月前
|
自然语言处理 算法 Unix
Vue3时间戳转换器实现方案
这是一个功能全面的时间戳转换工具,支持秒/毫秒级时间戳与日期的双向转换、实时时间戳显示、多时区切换、年周日计算及相对时间展示,界面简洁,操作便捷。
187 5
|
1月前
|
JavaScript
图片转PDF 在线工具分享
日常拍照、截图、证件等图片转PDF?无需安装软件!本在线工具免注册、免下载,上传图片→调整顺序→一键生成PDF,3步搞定。Vue开发,界面简洁,新手友好,即开即用,高效又专业。
354 19
|
2月前
|
移动开发 JavaScript 安全
文件16进制查看器 在线工具分享
一款基于Vue 3开发的在线文件十六进制查看器,纯前端运行,文件不上传、隐私安全;支持任意格式,提供空格/紧凑/大写三种Hex显示模式,一键复制或下载。即开即用,轻量高效。
867 9
文件16进制查看器 在线工具分享
|
2月前
|
算法 安全 JavaScript
HMAC在线加密 在线工具分享
一款基于Vue3开发的HMAC在线加密工具,支持MD5/SHA-1/SHA-256等算法,实时计算、纯前端处理,数据不上传,保障安全。提供十六进制/Base64双格式输出与一键复制功能,适用于API签名、数据校验等场景。
323 1
HMAC在线加密 在线工具分享

热门文章

最新文章

下一篇
开通oss服务