当前位置: 首页 > 面试题库 >

验证Node.js中的URL

江阳羽
2023-03-14
问题内容

我想验证以下类型的URL:

  • www.google.com
  • http://www.google.com
  • google.com

使用单个正则表达式,可以实现吗?如果是这样,请共享一个JavaScript解决方案。

请注意,我只希望底层协议为HTTP或HTTPS。而且,当前的主要问题是如何使用JavaScript中的一个正则表达式来映射所有这三种模式?不必检查页面是否处于活动状态。如果用户输入的值与上面列出的三种情况中的任何一种匹配,则true如果不匹配,则应返回false


问题答案:

这有点hack,但是如果我需要这样做,这就是我的处理方式:

第一步

解析并提取给定网址中的域/ IP

http:// **drive.google.com / 0/ **23➡drive.google.com

这是在nodejs中执行的操作:

var url = require("url");
var result = url.parse('http://drive.google.com/0/23');
console.log(result.hostname);

第二步

ping 提取的域/ ip-由于网络配置,并非所有服务器都会响应ICMP(PING)请求。

var ping = require ("net-ping");

var session = ping.createSession ();

session.pingHost (target, function (error, target) {
    if (error)
        console.log (target + ": " + error.toString ());
    else
        console.log (target + ": Alive");
});
  • 查看网包

第三步

您可以对该网址执行HTTP HEAD请求,并检查状态码。

var request = require('request');
request({method: 'HEAD', uri:'http://www.google.com'}, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})
  • 如果这是一项Web服务,这会有一定的风险(因为您可以触发操作)。
  • 如果网址需要身份验证/重定向,将会更加复杂
  • @JanJůna评论说使用HEAD更好。他是完全正确的。请注意,并非所有Web服务器都支持HEAD方法
  • 查看请求包

有一个包装!

您可以使用现有的称为 validUrl的 nodejs程序包

用法:

var validUrl = require('valid-url');

var url = "http://bla.com"
if (validUrl.isUri(url)){
    console.log('Looks like an URI');
} 
else {
    console.log('Not a URI');
}

安装

npm install valid-url --save


 类似资料:
  • 问题内容: 是否有一个用于node.js的好的验证框架,该框架可以验证以下变量: 如果其类型为字符串,日期,数字等 最大和最小长度 电子邮件,电话 等等… 问题答案: 我最近发现了chriso的node- validator 。 例

  • 我无法验证由v2终结点发布的Azure idToken的令牌签名。 我已经阅读了文件(https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-id-and-access-tokens#validating-标记),还有一些示例代码,但这是指TS/JS以外的语言。 目前我的代码是 我该怎么做呢?解码有效,但验证无效。 场地

  • 问题内容: 我想写书,所使用的一个一个的NodeJS REST的API服务器Joyent的,并且一切正常,除了我无法验证普通用户的身份验证。如果我跳到终端并执行,则无法在NodeJS http服务器上获取值username:password。如果我的NodeJS http服务器类似于 ,是否应该在来自回调的 req 对象中某处获取值username:password ?如何获得这些值而不必使用Co

  • 问题内容: 我正在尝试编写一个简单的脚本,该脚本从内部网络上的工具请求一些数据。这是代码: 现在的问题是,我该如何使用Kerberos票证进行身份验证,而不是以纯文本形式提供我的凭据? 问题答案: 在Paul Scheltema的答案中,您需要从操作系统的深度获取票证数据。您(或代表您的模块)必须使用GSS-API才能由Active Directory生成票证数据。 这种机制存在于Chrome中,

  • 问题内容: 我正在尝试使用url从jira服务器下载文件,但出现错误。如何在代码中包括证书以验证 错误: 我的Nodejs代码: 问题答案: 尝试添加适当的根证书 这总是比盲目地接受未经授权的端点要安全得多的选择,后者只能被用作最后的手段。 这可以像添加一样简单 到您的应用程序。 该SSL根CA NPM包(这里使用的)是关于这个问题的一个非常有用的包。

  • 问题内容: 是否存在node.js的现有用户身份验证库?特别是,我正在寻找可以对用户进行密码身份验证的东西(使用自定义后端身份验证数据库),并将该用户与会话相关联。 在编写身份验证库之前,我认为我会看看人们是否知道现有的库。通过Google搜索找不到任何明显的内容。 -Shreyas 问题答案: 看起来连接中间件的connect-auth插件正是我所需要的:http : //wiki.github