URL 验证或:我如何学会停止担心并热爱用户

每个 web 开发人员都会有一段时间必须进行某种类型的输入验证。表单不是博客文章,用户可以在电子邮件字段中诗意地表达他们对雅虎邮箱的喜爱。最终,需要进行字数限制、检查特定字符以及阻止用户发送垃圾 post 请求的简单验证技术。

但是,如果您需要验证 url 该怎么办?为了给问题添加另一层,如果您只想要 url 的主机名,没有路径,没有协议,只需要“dubya dubya dubya 点”(www.) 和 .com.

,该怎么办?

我们首先要知道 url 是否是 url。链接需要二级域名和顶级域名(分别为 walmart.com 中的 walmart 和 .com)以及方案 (https://)。如果没有这些部分,链接就不会链接到任何内容,并且与一行文本没有什么不同。

URL 验证或:我如何学会停止担心并热爱用户

但是现在我们知道了 url 的各个部分,我们到达了一个分叉点或开发路径。当数据发送到服务器时,验证是否应该限制现场用户或清理用户输入?

这两种选择都有优点和缺点:

提交前验证

如果您限制用户提交无效的 url,那么您可以通过强制用户提交您需要的确切输入结构来轻松获取服务器端的数据,而无需任何额外的工作。在这种情况下,输入元素的模式属性与一些正则表达式相结合将允许一些良好的老式字段验证。

这是此方法的一个示例:

<input type="text" pattern="https?://.*"

但是,它也有限制用户的缺点。它要求用户输入特定的部分,如果您只需要一个 .com,那么长的正则表达式模式可能有点过头了。

提交后验证

另一方面,如果您选择在用户提交数据后清理数据,则它允许用户输入任何内容,并让服务器决定如何处理数据。 javascript 的 url 构造函数会为您进行验证,如果输入无效,则返回 typeerror,并且还允许您提取 url 的特定部分,例如来源或主机名。

这是此方法的一个示例:

export const formatWebsiteAfterDomain = (website: string): string => {  if (!website.trim().length) {    return '';  }  const regEx = /:///;  const websiteTrimmed = website.trim();  const hasProtocol = regEx.exec(websiteTrimmed);  const updatedWebsite = hasProtocol    ? websiteTrimmed    : `https://${websiteTrimmed}`;  try {    const url = new URL(updatedWebsite);    return hasProtocol ? url.origin : url.origin.replace('https://', '');  } catch (_err) {    return websiteTrimmed;  }};

但是,由于您为用户的输入提供了很大的自由度,因此需要在服务器处理数据的方式上做出一些妥协。如果用户输入了无效的 url,您会如何处理它?您是否使用 typeerror 响应并通知用户,还是只允许服务器使用用户发送的内容?此外,url 构造函数通过检查是否存在方案(https:// 或 http://)来验证输入,这对于您的使用来说可能验证太少了。

最后,所采取的路径取决于问题的具体边缘情况。两种解决方案的组合可能是最全面、最通用的,或者其中一种选择可能就足够了。用户可以输入任何内容,您的解决方案将根据您愿意给予用户的自由度来确定。 然而,仍然普遍的是,用户输入任何内容的能力总是会迫使用户和开发人员做出某种妥协(通常开发人员会获得特定的输入模式,而用户会使用他们的应用程序)。

但是,由于用户输入的特殊性是永恒的,因此总会有开发人员疯狂地推出解决方案,以便当用户尝试将图像粘贴到表单的 url 字段时,他们的 web 应用程序不会崩溃。

以上就是URL 验证或:我如何学会停止担心并热爱用户的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1490196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
记录 Nodejs 应用程序的最佳实践
上一篇 2025年12月19日 13:00:44
掌握 JavaScript 中的 URL API
下一篇 2025年12月19日 13:00:57

相关推荐

  • 如何在Java中实现CompletableFuture异步任务

    CompletableFuture 提供非阻塞异步编程,支持链式调用与任务组合,通过 supplyAsync/runAsync 创建任务,thenApply/thenAccept/thenRun 连接操作,allOf/anyOf 管理多任务,exceptionally/handle 处理异常,避免阻…

    2026年9月24日
    1100
  • DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价

    DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价DeepSeek-V3.2-Exp 发布,训练推理提效,API 同步降价

    深度求索正式推出 deepseek-v3.2-exp 模型,该版本为实验性(experimental)更新。 作为通向新一代架构的过渡性尝试,V3.2-Exp 在 V3.1-Terminus 的基础上集成了 DeepSeek Sparse Attention(DSA),引入了一种创新的稀疏注意力机制…

    2026年9月24日 用户投稿
    500
  • 真我 GT8 Pro 手机外观公布:首创机械拼装设计

    真我 GT8 Pro 手机外观公布:首创机械拼装设计真我 GT8 Pro 手机外观公布:首创机械拼装设计真我 GT8 Pro 手机外观公布:首创机械拼装设计真我 GT8 Pro 手机外观公布:首创机械拼装设计

    今日,realme 真我 gt8 pro 手机公布了外观设计,行业首创机械拼装设计,将自定义的乐趣从软件延伸至硬件,实现 ” 一台手机,拼出 n 种形态 “,彻底告别行业非方即圆的设计定式。 用户只需三步:拧开螺丝——换上新 Deco ——拧紧螺丝,即可在清脆的 &#8221…

    2026年9月24日 用户投稿
    000
  • 全彩3D漫画汉化资源汇总_ACG漫画在线观看地址

    全彩3D漫画汉化资源汇总_ACG漫画在线观看地址全彩3D漫画汉化资源汇总_ACG漫画在线观看地址全彩3D漫画汉化资源汇总_ACG漫画在线观看地址全彩3D漫画汉化资源汇总_ACG漫画在线观看地址

    全彩3D漫画汉化资源可通过manwa.size/booklist平台获取,该网站汇集日漫、韩漫及国创全彩漫画,支持下拉式阅读,界面简洁且适配多端,无需下载即可在线流畅观看。 全彩3D漫画汉化资源汇总_ACG漫画在线观看地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来全彩3D漫画汉化资源…

    2026年9月24日 用户投稿
    600
  • TradingAgents-CN— 中文多智能体金融交易决策框架

    TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架TradingAgents-CN— 中文多智能体金融交易决策框架

    TradingAgents-CN是什么 tradingagents-cn是基于多智能体大模型的中文金融交易决策框架,在tauricresearch/tradingagents的基础上进行了开发,为中文用户提供了完整的文档体系和本地化支持。框架模拟真实交易公司的专业分工和协作决策流程,通过多个专业化a…

    2026年9月24日 用户投稿
    800
  • 使用 Java 读取文件并处理编码问题的实用指南

    使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南使用 Java 读取文件并处理编码问题的实用指南

    本文旨在帮助开发者理解如何在 Java 中以字节方式读取文件,并正确处理字符编码问题。文章将详细介绍如何使用 FileInputStream 读取文件,以及如何在将字节转换为字符串时指定正确的编码方式,避免出现乱码问题。此外,还将讨论如何按固定大小的块读取文件,并提供代码示例进行演示。 理解字节流和…

    2026年9月24日 用户投稿
    000
  • 安装系统后,发现电脑硬件温度过高,是什么原因?

    安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?安装系统后,发现电脑硬件温度过高,是什么原因?

    硬件温度过高主要由散热不良引起,如积灰、风扇故障、硅脂老化等;长期高温会缩短硬件寿命、引发降频、死机或蓝屏;可通过HWMonitor等软件监控温度,并定期清理灰尘、更换硅脂或风扇来解决。 电脑硬件温度过高,通常是散热不良导致的。可能是散热器积灰、风扇故障,也可能是硅脂老化,甚至可能是硬件本身的问题。…

    2026年9月24日 用户投稿
    400
  • mysql数据库怎么实现

    mysql数据库怎么实现mysql数据库怎么实现mysql数据库怎么实现mysql数据库怎么实现

    MySQL数据库实现步骤:安装MySQL服务器;创建数据库;创建用户并授予权限;连接到数据库;创建表;插入数据;查询数据;修改数据;删除数据;备份数据库。 MySQL数据库实现 如何实现MySQL数据库? 实现MySQL数据库涉及以下步骤: 1. 安装MySQL服务器 从MySQL官方网站下载并安装…

    2026年9月24日 用户投稿
    000
  • sublime怎么把当前文件在文件管理器中显示_sublime快速定位文件到系统资源管理器

    sublime怎么把当前文件在文件管理器中显示_sublime快速定位文件到系统资源管理器sublime怎么把当前文件在文件管理器中显示_sublime快速定位文件到系统资源管理器sublime怎么把当前文件在文件管理器中显示_sublime快速定位文件到系统资源管理器sublime怎么把当前文件在文件管理器中显示_sublime快速定位文件到系统资源管理器

    答案:可通过右键菜单、插件或自定义快捷键在文件管理器中定位当前文件。1. 在侧边栏右键文件选择“Show in Explorer/Finder”;2. 安装SideBarEnhancements插件增强功能;3. 创建自定义命令并绑定快捷键实现一键打开路径;4. 复制状态栏路径手动跳转。推荐使用插件…

    2026年9月24日 用户投稿
    000
  • Debian OpenSSL如何管理私钥和公钥

    Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥Debian OpenSSL如何管理私钥和公钥

    在debian系统中,openssl是一个功能强大的工具,用于生成和管理私钥及公钥。以下是利用openssl管理私钥和公钥的基本流程: 生成私钥 生成RSA私钥: openssl genrsa -out private_key.pem 2048 此命令将创建一个2048位的RSA私钥,并将其存储在p…

    2026年9月24日 用户投稿
    800
  • swoole是服务还是框架

    swoole是服务还是框架swoole是服务还是框架swoole是服务还是框架swoole是服务还是框架

    swoole有两个部分。 一个是PHP扩展,用C开发的,这是核心。 另一个是框架,像yii、TP、Laravel一样,是PHP代码写的。 swoole扩展本身提供了web服务器功能,可以替代php-fpm。                 (推荐学习: swoole视频教程) 而如果仅仅用swool…

    2026年9月24日 用户投稿
    000
  • AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?

    AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?AMD Radeon RX 7800 XT对决NVIDIA GeForce RTX 4070 Super:2K分辨率光追游戏,谁的性价比更能打动玩家?

    7800 XT在2K非光追游戏中帧数更稳,显存大、性价比高;RTX 4070 Super在光追和AI技术上领先,支持DLSS 3,适合追求高画质与未来兼容性的用户。 在2K分辨率下玩支持光追的游戏,RX 7800 XT和RTX 4070 Super各有优势,选择哪张卡更划算,得看你的具体需求和预算。…

    2026年9月24日 用户投稿
    100
  • 小米17/iPhone 17户外强光下显示对比:小米更清晰

    小米17/iPhone 17户外强光下显示对比:小米更清晰小米17/iPhone 17户外强光下显示对比:小米更清晰小米17/iPhone 17户外强光下显示对比:小米更清晰小米17/iPhone 17户外强光下显示对比:小米更清晰

    9月29日,小米集团总裁卢伟冰发布了一段小米17与iphone 17在户外强光环境下的屏幕显示对比视频。 视频中,两款手机同时播放相同内容,在强烈日光照射下,小米17的画面表现更为清晰明了,视觉效果优于iPhone 17。 据了解,小米17搭载了全新的M10发光材料体系,并采用了新型红色发光主材,能…

    2026年9月24日 用户投稿
    000
  • 神马搜索App图片编辑集成详解_神马搜索App搜索后处理技巧

    神马搜索App图片编辑集成详解_神马搜索App搜索后处理技巧神马搜索App图片编辑集成详解_神马搜索App搜索后处理技巧神马搜索App图片编辑集成详解_神马搜索App搜索后处理技巧神马搜索App图片编辑集成详解_神马搜索App搜索后处理技巧

    神马搜索App支持图片编辑,长按图片选择“编辑图片”可进入裁剪、旋转、添加文字或涂鸦功能,便于用户调整构图与标注内容。 如果您在使用神马搜索App时,希望对搜索结果中的图片进行编辑或处理,可以直接利用其内置的图片编辑功能。以下是具体的操作步骤和技巧。 本文运行环境:华为Mate 60 Pro,Har…

    2026年9月24日 用户投稿
    700
  • windows chkdsk卡在某个阶段不动了怎么办_CHKDSK磁盘检查卡住无响应的解决方案

    windows chkdsk卡在某个阶段不动了怎么办_CHKDSK磁盘检查卡住无响应的解决方案windows chkdsk卡在某个阶段不动了怎么办_CHKDSK磁盘检查卡住无响应的解决方案windows chkdsk卡在某个阶段不动了怎么办_CHKDSK磁盘检查卡住无响应的解决方案windows chkdsk卡在某个阶段不动了怎么办_CHKDSK磁盘检查卡住无响应的解决方案

    CHKDSK长时间无响应时,应先观察硬盘指示灯并预估时间,确认是否真卡死;若超24小时无进展,可尝试重启进入安全模式重试;同时使用SFC和DISM工具修复系统文件及映像,排除软件干扰与系统损坏问题;极端情况下可通过Windows恢复环境(WinRE)运行CHKDSK以绕过系统加载干扰。 如果您尝试使…

    2026年9月24日 用户投稿
    1800
  • 物华弥新新手阵容怎么搭配 物华新手强力阵容推荐

    物华弥新新手阵容怎么搭配 物华新手强力阵容推荐物华弥新新手阵容怎么搭配 物华新手强力阵容推荐物华弥新新手阵容怎么搭配 物华新手强力阵容推荐物华弥新新手阵容怎么搭配 物华新手强力阵容推荐

    莲塘乳鸭图控制阵容以莲塘乳鸭图为关键核心,配合曾侯乙编钟、T形帛画、千里江山图、天蓝瓶以及鹿角立鹤组成。该阵容主打强力控制效果,通过沉默、眩晕等手段限制敌方角色行动,从而掌握战场主动权。这些角色在游戏前期较易获得,新手玩家在初始阶段通过常规抽卡即可快速成型,非常适合过渡期使用。 曾侯乙编钟爆发组合由…

    2026年9月24日 用户投稿
    600
  • 拼多多卖货平台收取多少费用?拼多多卖货

    拼多多卖货平台收取多少费用?拼多多卖货拼多多卖货平台收取多少费用?拼多多卖货拼多多卖货平台收取多少费用?拼多多卖货拼多多卖货平台收取多少费用?拼多多卖货

    拼多多卖货需承担交易服务费0.6%、类目技术服务费3%-10%、推广费及保证金等成本,具体费用依类目和营销策略而定。 如果您在拼多多平台上销售商品,需要了解平台收取的各项费用构成,以便准确核算成本和利润。以下是关于拼多多卖货平台费用的详细说明: 本文运行环境:小米14 Pro,Android 15 …

    2026年9月24日 用户投稿
    700
  • Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置

    Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置Chrome浏览器怎么阻止网站在后台同步_禁止网站后台同步操作设置

    可通过禁用后台同步权限、移除已授权站点、启用节电模式及使用扩展程序四种方法阻止Chrome网站后台同步。首先在设置中进入“隐私和安全”→“网站设置”→“后台同步”,关闭全局功能或屏蔽特定网站;其次在“已获权限的网站”中删除目标站点的同步权限;然后通过访问chrome://settings/perfo…

    2026年9月24日 用户投稿
    800
  • 火王热水器质量测评(火王热水器质量如何)

    火王热水器质量测评(火王热水器质量如何)火王热水器质量测评(火王热水器质量如何)火王热水器质量测评(火王热水器质量如何)火王热水器质量测评(火王热水器质量如何)

    火王热水器以其卓越的性能、贴心的用户体验和过硬的品质赢得了市场的广泛认可。然而,对于消费者来说,在琳琅满目的热水器市场中,如何选择一款称心如意的产品尤为重要。本文由php小编鱼仔倾情撰写,将带您深入剖析火王热水器的品质、性能和用户体验,为您选购热水器提供详尽的参考。 火王热水器作为家喻户晓的品牌,其…

    2026年9月24日 用户投稿
    200
  • 使用 Java 获取 ISO 8601 格式的日期和时间

    使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间使用 Java 获取 ISO 8601 格式的日期和时间

    本文介绍了如何使用 Java 获取符合 ISO 8601 标准的日期和时间字符串,例如 2022-10-03T19:45:47.844Z。我们将探讨使用 java.time.Instant 类来获取 UTC 时间,并将其格式化为所需的字符串表示形式。同时,我们还会讨论时间精度以及如何避免使用过时的日…

    2026年9月24日 用户投稿
    000

发表回复

登录后才能评论
关注微信