确保 URI 有效

2023-12-19

我试图确保传递给我的 go 程序的 URL 是有效的。但是,我似乎不知道该怎么做。我以为我可以直接喂它url.Parse,但这似乎不起作用。

package main

import (
    "fmt"
    "net/url"
)

func main() {
    url, err := url.Parse("http:::/not.valid/a//a??a?b=&&c#hi")
    if err != nil {
        panic(err)
    }
    fmt.Println("It's valid!", url.String())
}

操场 http://play.golang.org/p/uhG4SsVfoW

有没有类似的事情过滤器变量 https://eval.in/190813我可以用?


您可以检查您的 URL 是否具有方案、主机和/或路径。

如果检查返回的 URL,您可以看到无效部分被插入到不透明数据部分中(因此从某种意义上说,它是有效的)。

url.URL{Scheme:"http", Opaque:"::/not.valid/a//a", Host:"", Path:"", RawQuery:"?a?b=&&c", Fragment:"hi"}

如果您解析 URL 并且没有方案、主机和路径,您可能会认为它无效。 (尽管没有路径的主机通常是可以的,因为这意味着/,所以你需要检查一下)

u, err := url.Parse("http:::/not.valid/a//a??a?b=&&c#hi")
if err != nil {
    log.Fatal(err)
}

if u.Scheme == "" || u.Host == "" || u.Path == "" {
    log.Fatal("invalid URL")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确保 URI 有效 的相关文章

  • 根据查询参数将相同的URL映射到Spring中的不同控制器

    我正在使用基于 spring 注解的控制器 我希望我的 URL user messages 映射到某个控制器 a 如果存在查询参数标记 否则映射到某个不同的控制器 b 这是必需的 因为当存在参数标签时 可以存在更多参数以及我想要在不同控制器
  • 使用 testify 模拟接口方法两次,输入和输出不同

    如何在 golang 测试中模拟接口方法两次 例如 type myCache interface Get key string data interface error type service struct cache myCache f
  • 完全删除使用“go get”安装的软件包?

    我正在使用 Go 1 13 1 最新版本 我正在尝试完全删除我安装的软件包go get来自 GitHub 这go clean i
  • 在 Go 中使用电子邮件地址创建证书签名请求 (CSR)

    我尝试使用 crypto x509 包生成 CSR 但没有找到将 emailAddress 字段添加到其主题中的方法 根据文档证书申请 http golang org pkg crypto x509 CertificateRequest结构
  • Golang中如何删除字符串的最后一个字符?

    我想删除字符串的最后一个字符 但在此之前我想检查最后一个字符是否是 如何才能做到这一点 以下是删除尾随加号的几种方法 package main import fmt strings func TrimSuffix s suffix stri
  • 使用 jQuery 检查输入是否为空

    我有一个表单 我希望填写所有字段 如果单击某个字段然后未填写 我想显示红色背景 这是我的代码 apply form input blur function if input text is empty this parents p addC
  • 多语言标记验证器

    是否有免费的在线多语言标记验证服务可以正确识别和验证多语言标记 我确实找到了totalvalidator和htmlvalidator 但这些是 付费 非基于网络的解决方案 Use http validator w3 org nu http
  • 为什么 Go 中只有 int 而没有 float?

    在 Go 中 有这样的类型int这可能相当于int32 or int64取决于系统架构 我可以声明一个整数变量而不用担心它的大小 var x int 为什么没有这个类型float 这相当于float32 or float64取决于我的系统架
  • Google 地图 API 标记图标 URL?

    我正在尝试将标记图标更改为 红圈 或 红针 或其他任何内容 在这些代码中 markerOptions icon images beachflag png 标记不显示 但如果我做icon一行注释行 因此标记显示为 red pin icon 所
  • 重新插入通道导致死锁

    我有稳定的入站 作业 流 将其输入到无缓冲通道中 我有一个for range循环来迭代项目并处理它们 如果处理该项目失败 我会将项目重新插入通道中 以便稍后重试 问题是当我将项目重新插入通道时 它陷入僵局 我明白为什么会发生这种情况 处理器
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • (转)如何使用toml文件?

    正如标题 我想知道如何使用 golang 中的 toml 文件 在此之前 我展示了我的 toml 示例 这样对吗 datatitle enable true userids 12345 67890 datatitle 12345 prop1
  • Angular 模板验证表单

    我正在研究表单验证 我正在使用模板驱动的验证表单 其编码如下 现在工作正常 但是当我尝试添加时 username ngModel and password ngModel 在创建验证类的输入中 它向我显示一个错误 也请找到该错误 div c
  • 禁用 notInArray 验证器 Zend Framework 2

    有没有办法在 Zend Framework 2 中禁用 notInArray Validator 互联网上的所有信息都显示如何在 Zend Framework 1 中禁用 notInArray Validator 例如以这种方式 如果您根本
  • 编写每个处理程序中间件

    我希望从处理程序中提取一些重复的逻辑 并将其放入一些每个处理程序的中间件中 特别是 CSRF 检查 检查现有会话值 即身份验证或预览页面 等 我读了关于此的几篇文章 http justinas org writing http middle
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 如何在Go中将字节数组转换为字符串[重复]

    这个问题在这里已经有答案了 byte字符串会引发错误 string byte n 也会引发错误 顺便说一下 例如 文件名的 sha1 值是字符串 它是否明确需要 utf 8 或任何其他编码集 谢谢 我用来转换的最简单方法byte to st
  • Django 检索 GET 列表

    我是 Django 新手 我有一个 URL 列表 例如 example com item test item for test url 我知道如何在视图中检索该值 a request GET getlist item 我的问题是 如何在模板
  • 设置asp.net验证器的顺序

    我使用 3 个验证器来验证文本框 但当在文本框中输入无效值时 所有验证器都会被触发 但我希望这些验证器按照特定的顺序工作 以便用户可以一一解决这些错误

随机推荐

  • 在函数前面导出模块与在函数末尾导出模块

    我正在开发一个应用程序GatsbyJS and export正在使用我的一个GraphQL片段如下 import graphql from gatsby export const w300Image graphql fragment w30
  • 从类引用创建的表单中执行方法 (Delphi)

    我有一个表单 form2 并且我实现了以下 PUBLIC 方法 function ShowInterface i integer boolean 该表单位于将被动态加载的包中 现在我想实例化这个表单 form2 并执行上面的方法 重要提示
  • 仅在生产环境中执行了验证,但 Rails 3.2.0 上未用 field_with_errors div 包围的字段

    我有一个发布模型 对某些字段进行验证 例如标题 我删除了我觉得烦人的错误消息 并设置了一个漂亮的 CSS 以便当输入被包含在 field with error div 中时 用户知道哪个字段未验证 问题是 当我部署到生产环境时 仍然会执行验
  • 使用 pip install 时出错:“无法找到满足要求 的版本”

    我正在尝试安装django trumbowyg https github com sandino django trumbowyg https github com sandino django trumbowyg到我的应用程序 当我这样做
  • Visual Studio 2015 中是否支持 ASP.NET Core?

    现在 ASP NET Core 已随 VS 2017 一起提供 3 月发布 那么 VS 2015 中它们将支持 ASP NET Core 多久 我的意思是project json将不再被使用 那么我们是否需要将现有项目移至VS 2017并且
  • Java类的内存对齐

    假设我在 64 位机器上编译 C 程序gcc 我假设sizeof int 是 8 个字节 并且sizeof char 是1字节 由于内存对齐 以下结构 struct example int a char c 实际上大小不是 9 个字节 而是
  • 石英错误失火处理和作业恢复失败

    我是 JSP 和 Quartz Scheduling 的新手 在这个项目中 我试图让石英调度程序继续运行 以防服务器关闭然后忽略错过的作业 为此 我研究了 JobPersistence 并将quartz properties 文件修改如下
  • Protovis - 这些没有花括号的函数是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中不带花括号的 Lambda 函数语法 https stackoverflow com questions 5919351 lambda function syntax in j
  • 如何使用 postThreadMessage 传递结构

    我想使用 Windows 的消息队列功能将结构发送到另一个线程 但我发现postthreadmessage函数只提供了两个整数参数 lparam和wparam供我传递参数 所以我决定将结构体的地址放在lparam中 这是 Windows 用
  • 我如何允许 div 不透明度而不是背景图像?

    我如何允许 div 不透明度而不是背景图像 在 ajax 请求中 以下类将应用于选定的 div 该 div 的所有内容都变得不透明 然而 后台ajax加载指示器也变得不透明 如何使背景图像不变得不透明 ajax mask opacity 0
  • Playframework2就像春天的反向路由

    任何人都可以建议我春季的路由机制 我使用 thymeleaf 作为我的视图 我想在视图中使用类名和方法名作为我的 url 就像在 playframework 中一样 但我喜欢在 spring 中在控制器方法声明之前定义 url 等待您的建议
  • 为什么IL要设置这个值两次?

    我尝试了一下尝试罗斯林 http tryroslyn azurewebsites net 当我输入这段代码时 using System using System Linq using System Collections Generic u
  • 是否保证保留对易失性结构的单独成员的写入顺序?

    假设我有一个这样的结构 volatile struct int foo int bar data data foo 1 data bar 2 data foo 3 data bar 4 作业都保证不被重新排序吗 例如 如果没有 volati
  • MATLAB - 加载文件名存储在字符串中的文件

    我正在使用 MATLAB 处理文件中的数据 我正在编写一个程序 它接受用户的输入 然后在绘制它们的目录中找到特定文件 文件命名为 名称 U 速率 name 是表示计算机名称的字符串 rate 是一个数字 这是我的代码 get user to
  • “npm install -g”有什么作用?

    我正在尝试通过运行从 NPM 安装 Lessnpm install g less在命令行中 我检查了文件安装命令 https www npmjs org doc cli npm install html 在全局模式下 即 在命令后附加 g
  • Firebase UserProfileChangeRequest 不起作用

    我正在尝试创建一个个人资料活动 用户可以在其中更改这些个人资料图片和显示名称 我正在尝试更新用户照片或用户名 名为 CompleteListener task isSuccessful true 但什么也没完成 为什么 更新名称的函数 Fi
  • std::map 和 std::variant 的不完整类型

    考虑这个简化且非常具体的递归变体实现std variant include
  • Pyramid.安全问题:双cookies? cookie 不安全?过期?

    我正在第一次尝试金字塔安全模块 我使用此登录代码来设置 auth tkt view config route name LoginForm request method POST renderer string class LoginFor
  • PHP realpath函数问题

    我似乎无法让 realpath 函数处理变量 有办法解决这个问题吗 当我在函数中使用变量时 它不会返回任何内容 我知道路径名在没有 realpath 函数的情况下也可以工作 但我想将 realpath 函数与我的路径名一起使用 realpa
  • 确保 URI 有效

    我试图确保传递给我的 go 程序的 URL 是有效的 但是 我似乎不知道该怎么做 我以为我可以直接喂它url Parse 但这似乎不起作用 package main import fmt net url func main url err