http链接转成https的链接的几种方法
以下是一个将HTTP链接转换为HTTPS的JavaScript函数,处理了多种常见输入情况:
function convertToHttps(url) {if (typeof url !== 'string') return url;// 移除首尾空格并处理空字符串const trimmedUrl = url.trim();if (!trimmedUrl) return 'https://';// 替换HTTP协议(不区分大小写)let converted = trimmedUrl.replace(/^http:\/\//i, 'https://');// 处理协议相对地址(以//开头)if (converted.startsWith('//')) {return 'https:' + converted;}// 处理无协议地址if (!/^https?:\/\//i.test(converted)) {// 处理类似 "example.com/path" 或 "www.example.com" 的情况return converted.startsWith('/') ? `https:/${converted}` : `https://${converted}`;}return converted;
}
功能说明:
-
协议转换:
- 将
http://
或HTTP://
转换为https://
- 保留已存在的
https://
协议不变
- 将
-
协议相对地址处理:
- 输入
//example.com
→ 转换为https://example.com
- 输入
-
无协议地址处理:
- 输入
example.com
→ 转换为https://example.com
- 输入
/api/data
→ 转换为https:///api/data
(需根据业务场景调整)
- 输入
-
特殊字符处理:
// 保留端口号和路径 convertToHttps('http://example.com:8080/api?v=1') // → "https://example.com:8080/api?v=1"// 处理用户认证信息 convertToHttps('http://user:pass@example.com') // → "https://user:pass@example.com"
测试用例:
// 基础转换
console.log(convertToHttps('http://example.com')); // "https://example.com"
console.log(convertToHttps('https://secure.com')); // "https://secure.com"
console.log(convertToHttps('HTTP://BIGSITE.COM')); // "https://BIGSITE.COM"// 协议相对地址
console.log(convertToHttps('//cdn.example.com')); // "https://cdn.example.com"// 无协议地址
console.log(convertToHttps('example.com/path')); // "https://example.com/path"
console.log(convertToHttps('www.example.com')); // "https://www.example.com"
console.log(convertToHttps('/api/data')); // "https:///api/data"// 特殊场景
console.log(convertToHttps('http://user:pass@site.com')); // "https://user:pass@site.com"
console.log(convertToHttps('http://localhost:3000')); // "https://localhost:3000"
增强建议:
-
域名白名单:
const WHITELIST = ['localhost', '127.0.0.1']; function shouldConvert(url) {const domain = new URL(url).hostname;return !WHITELIST.includes(domain); }
-
混合内容检测:
function hasMixedContent(pageUrl, resourceUrl) {const pageProtocol = new URL(pageUrl).protocol;const resProtocol = new URL(resourceUrl).protocol;return pageProtocol === 'https:' && resProtocol === 'http:'; }
-
自动重定向处理:
async function secureFetch(url) {const secureUrl = convertToHttps(url);try {return await fetch(secureUrl);} catch (err) {if (err.message.includes('SSL')) {console.warn('回退到HTTP');return fetch(url.replace('https://', 'http://'));}throw err;} }
该函数可满足大多数场景的HTTP到HTTPS转换需求,建议根据具体业务场景调整协议回退策略和特殊域名处理逻辑。
相关文章:
http链接转成https的链接的几种方法
以下是一个将HTTP链接转换为HTTPS的JavaScript函数,处理了多种常见输入情况: function convertToHttps(url) {if (typeof url ! string) return url;// 移除首尾空格并处理空字符串const trimmedUrl url.trim();if (!trimmedUrl) return https://;// 替…...

STM32——串口通信 UART
一、基础配置 Universal Asynchronous Receiver Transmitter 异步,串行,全双工 TTL电平 :高电平1 低电平0 帧格式: 起始位1bit 数据位8bit 校验位1bit 终止位1bit NVIC Settings一栏使能接受中断。 之前有设置LCD,…...
mybatis日期格式与字符串不匹配bug
异常特征:java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String ### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.Str…...

文献分享: ConstBERT固定数目向量编码文档
😂图放这了,大道至简的 idea \text{idea} idea不愧是 ECIR \text{ECIR} ECIR 👉原论文 1. ConstBERT \textbf{1. ConstBERT} 1. ConstBERT的原理 1️⃣模型的改进点:相较于 ColBERT \text{ColBERT} ColBERT为每个 Token \text{Tok…...

学习记录-用例设计编写
黑马测试视频记录 目录 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法编辑 5、错误推荐法 一、 软件测试流程 二、测试用例编写格式 1、等价类法 2、边界值分析法 3、 判定表法 4、场景法 5、错误推荐法 时间紧任务重…...

学习工具的一天之(burp)
第一呢一定是先下载 【Java环境】:Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…...
el-tree右键节点动态位置展示菜单;el-tree的节点图片动态根据节点属性color改变背景色;加遮罩层(opacity)
一、el-tree右键节点动态位置展示菜单 关键:@node-contextmenu="handleRightClick"与@node-click=“handleNodeClick” <div class="content"><el-tabs class="tabs" @tab-click="handleClick" v-model="Modal"…...
K8s 1.27.1 实战系列(一)准备工作
一、主机规划与硬件要求 1、节点数量 至少需要 3 台服务器(1 台 Master 节点,2 台 Worker 节点)。本地测试可缩容:若仅用于测试,可缩减为 1 个 Master 和 1 个 Worker,但需注意稳定性风险。2、硬件配置 Master 节点:建议 2 核 CPU、8GB 内存、80GB 硬盘。Worker 节…...

说一下SpringBoot3新特新和JDK17新特性
JDK1.8(Java8)新特性 stream流式编程 流处理 Stream API 提供了对集合数据进行操作的一种高效、简洁的方式。它支持顺序和并行的聚合操作 如:过滤(filter)、排序(sort)、映射(map&…...

Linux系统服务安全检测手记
一:服务器ip暴露ip和端口的安全问题 服务器IP和端口暴露在外网中确实存在一定的安全风险,以下是几个主要的安全问题及相应的缓解措施: ### 主要安全问题 1. **直接攻击**: - 暴露的IP地址和开放的端口可能成为黑客直接攻击的…...

鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 目录 技术融合背景与价值鸿蒙分布式架构解析DeepSeek技术体系剖析核心整合架构设计智能调度系统实现…...
[创业之路-329]:华为铁三角实施的步骤
一、通用过程 华为铁三角实施的步骤主要包括以下几个关键阶段: 1、明确角色与职责 确定铁三角成员:组建由客户经理(AR)、解决方案经理(SR)和交付经理(FR)组成的铁三角团队。制定岗…...

1.15-16-17-18迭代器与生成器,函数,数据结构,模块
目录 15,Python3 迭代器与生成器15-1 迭代器15-1-1 基础知识15-1-2 迭代器与for循环工作原理 15-2 生成器(本质就是迭代器)15-2-1 yield 表达式15-2-2 三元表达式15-2-3 列表生成式15-2-4 其他生成器(——没有元祖生成式——&…...
java面向对象(详细讲解)
第一章 类和对象 1.面向对象的介绍 1.面向过程:自己的事情自己做,代表语言c语言 2.面向对象:自己的事情别人做,代表语言java 3.为啥要使用面向对象思想编程:很多功能别人给我们实现好了,我们只需要拿过…...

代码随想录二刷|图论2
图论 基础知识 1 无向图 (1)度:一个顶点连n条边就度为n (2)权 加权无向图:有边长的无向图 (3)通道:两个顶点之间有一些边和点,并且没有重复的边 路&am…...

毕业项目推荐:基于yolov8/yolov5/yolo11的暴力行为检测识别系统(python+卷积神经网络)
文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

服务器CPU微架构
1、微架构图 前端:预解码、解码、分支预测、L1指令缓存、指令TLB缓存 后端:顺序重排缓存器ROB处理依赖,调度器送到执行引擎 执行引擎:8路超标量,每一路可以进行独立的微操作处理 Port0、1、5、6支持整数、浮点数的加…...

用本地浏览器打开服务器上使用的Tensorboard
文章目录 前言一、Tensorboard的安装二、使用步骤1.服务器上的设置2.在本地打开 总结 前言 最近有使用服务器上的Tensorboard的需求,踩了几个雷,现已在搜索和帮助下解决,总结于此。 一、Tensorboard的安装 pip install tensorboard2.12.0注…...

Nginx或Tengine服务器配置SSL证书
本文将全面介绍如何在Nginx或Tengine服务器配置SSL证书,具体包括下载和上传证书文件,在Nginx上配置证书文件、证书链和证书密钥等参数,以及安装证书后结果的验证。成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问Nginx服务器…...

【基础4】插入排序
核心思想 插入排序是一种基于元素比较的原地排序算法,其核心思想是将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。 例如扑克牌在理牌的时候,一般会将大小王、2、A、花牌等按大小顺序插入到左边&…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...