URL 片段 (#) 允许的字符

2024-01-18

在互联网上进行一番挖掘后,我无法找到可以用于 URL 片段的字符的良好答案。我正在编写一个 javascript 脚本,它将利用 URL 片段。

我不想让 URL 看起来太复杂,从而使 URL 看起来更友好。所以我想知道是否可以使用“:、?、&或!”等字符在 URL 片段中并且仍然有效。

我的 URL 片段应包含以下值:

  • order-by
    • id
    • desc or asc
  • path
    • //完整/转义/路径/此处/

tl;dr

片段标识符组件可以包含:

  • 0 - 9
  • a - z
  • A - Z
  • ? / : @ - . _ ~ ! $ & ' ( ) * + , ; =
  • 百分比编码字符(a%后跟两个十六进制数字)

我怎样才能找到这个?

URI标准是STD 66 http://tools.ietf.org/html/std66,目前映射到RFC 3986 https://www.rfc-editor.org/rfc/rfc3986.

在本文档中,您将找到您需要了解的所有内容。

The 片段标识符组件定义见 3.5 节 https://www.rfc-editor.org/rfc/rfc3986#section-3.5:

fragment = *( pchar / "/" / "?" )

这意味着该片段可以不包含任何内容或(任意组合)

  • 定义在的字符pchar
  • the / https://stackoverflow.com/a/20441627/1591669
  • the ?

的定义pchar

请参阅附录A。 https://www.rfc-editor.org/rfc/rfc3986#appendix-A看看如何pchar被定义为:

pchar = unreserved / pct-encoded / sub-delims / ":" / "@"

所以这增加了

  • 定义在的字符毫无保留的
  • 定义在的字符pct编码
  • 定义在的字符子定界
  • the :
  • the @ https://stackoverflow.com/a/19737890/1591669

的定义unreserved

现在检查如何毫无保留的被定义为:

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

这增加了

  • 定义在的字符ALPHA
  • 定义在的字符DIGIT
  • the -
  • the .
  • the _
  • the ~

的定义ALPHA and DIGIT

检查 ALPHA 和 DIGIT 是如何定义的。它们没有在附录中列出,因为它们来自ABNF 核心规则 https://www.rfc-editor.org/rfc/rfc2234#section-6.1, as is 1.3 节中解释 https://www.rfc-editor.org/rfc/rfc3986#section-1.3:

ALPHA(字母),[...] DIGIT(十进制数字)[...]

所以这增加了

  • a-z, A-Z
  • 0-9

的定义pct-encoded

检查如何pct编码被定义为:

pct-encoded = "%" HEXDIG HEXDIG

这允许任何百分比编码字符 https://www.rfc-editor.org/rfc/rfc3986#section-2.1.

的定义sub-delims

检查如何子定界被定义为:

sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

这增加了

  • the !
  • the $
  • the &
  • the '
  • the (
  • the )
  • the *
  • the +
  • the ,
  • the ;
  • the =
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

URL 片段 (#) 允许的字符 的相关文章

随机推荐

  • RibbonControlsLibrary - 如何禁用最小化?

    如何从 RibbonControlsLibrary 禁用功能区控件的最小化 以下内容禁用了双击选项卡标题和上下文菜单上的 最小化功能区 public class ExRibbon Ribbon public override void On
  • 可投放的 可投放的

    我有这个标记 ul class cat ul class cat ul ul class cat ul ul 我做了这件事 ul cat droppable drop function alert this attr id 它总是写 你好
  • Cruise Control .net:使用包并显示 NUnit 结果

    经过一番困惑后 我终于成功地在我们的构建服务器上部署了 Cruise Control net 的实例 它每隔几分钟轮询一次服务器 并且仅在检测到 svn 存储库中的更改时才进行构建 对于构建和测试 我结合使用了 MSBuild 和 NUni
  • 是否可以在“拉模式”下运行剧本?

    我有一些在主主机上启动并在远程主机上运行特定操作的剧本 这是一种 推送 模式 活动由主控主机发起 我的几台主机在给定时间停机 并且在这种状态下显然无法运行剧本 这会导致主机是最新的 而其他主机则不是 为了解决这个问题 我可以以常规方式在主主
  • 使用 Google Drive API 更新文件错误 403

    目前 我使用 Google Cloud 的 GWT 应用程序遇到问题 我实际上有一段代码 允许您使用谷歌驱动器应用程序上传文件 除此之外 随着谷歌的更新 谷歌驱动器上的文件不再可能有多个父级 我们可以在这里看到 https cloud go
  • C++ 中变量的作用域最小化

    我现在正在编程一段时间 并开始尝试改进我的代码 由于我真的很讨厌创建大量在长函数中仅使用一次的变量 因此通过使用括号来缩短变量范围是一个好习惯吗 IE 而是写 void fcn int var1 some part of fcn use o
  • 如何在 CLI 容器之外查询 Hyperledger Fabric 区块链数据?

    我正在使用 Fabric sample 中的 byfn sh 脚本来启动我的区块链 我想从区块链中调用和查询 PHP 网站的数据 我确实知道我只能使用 CLI 容器中的 API 调用或使用 JavaSDK NodeSDK RESTapi 如
  • C++11 何时使用内存栅栏?

    我正在编写一些线程 C 11 代码 并且我不完全确定何时需要使用内存栅栏或其他东西 所以这基本上就是我正在做的事情 class Worker std string arg1 int arg2 int arg3 std thread thre
  • Azure DevOps Build 出现错误:无法找到程序集“System.ComponentModel.Annotations”

    我有一个 netstandard 2 0 项目 参考System ComponentModel Annotations 它在我的本地计算机上构建得很好 但是当我尝试使用 Azure DevOps 管道构建它时 出现以下错误 警告 MSB32
  • Octave 字体配置错误

    我按照给出的说明通过 Homebrew 安装了 Octavehere http jatinganhotra com blog 2014 01 21 installing octave on os x 10 dot 9 mavericks 当
  • AngularJS {{ 值 | number:1 }} 不四舍五入到小数点后 1 位

    p b x title b Rating x rating number 1 p 上面的代码是我正在使用的 它正确获取值 因为它显示一个未舍入的数字 例如 3 333333333 所以我知道该值已正确传递 为什么 number 过滤器不起作
  • 我是否需要重复使用相同的 Akka ActorSystem,还是可以在每次需要时创建一个?

    Akka 2 x 需要很多命令来引用ActorSystem 因此 创建一个 actor 的实例MyActor你可能会说 val system ActorSystem val myActor system actorOf Props MyAc
  • python protobuf无法反序列化消息

    在 python 中开始使用 protobuf 我遇到一个奇怪的问题 一个简单的消息原型定义是 syntax proto3 package test message Message string message 1 string sende
  • 无法通过API上传github发布资产

    我有一个 github 版本 但还没有资产 curl https api github com repos cljsinfo api docs releases 1260660 assets 但是我不能上传资产 https develope
  • Windows 中带有 mcrypt 的 PHP 7.2

    有一些巨大的遗留系统依赖于 PHPmcrypt极其重要且至关重要 包括数据库中的数据存储 我需要找到一种方法来维护这个库 同时升级到 PHP 7 2 已经运行良好 我本地的测试环境是Windows 现场环境运行在CentOS上 我看到的一些
  • preg_replace 中的 urlencode

    str preg replace look 1 80 Ui look a href 1 a str 我想对 url 进行编码 但我该怎么做呢 我可以在 preg replace 中使用 urlencode 函数吗 类似的东西 str pre
  • 如何从 stdin 读取一个字符而无需按 Enter 键?

    I want to run an executable that blocks on stdin and when a key is pressed that same character is printed immediately wi
  • 即使我的应用程序使用捆绑器,我是否需要将乘客安装为常规 gem?

    我正在尝试设置一个新服务器来托管 Rails 应用程序 并希望干净安装所有组件 因此我决定使用 rvm bundler 这是我第一次设置 Rails 服务器 我之前曾在应用程序中使用过捆绑器 并且我了解它如何管理应用程序的依赖项 但由于我安
  • Google PubSub 同时发布请求

    在 Google PubSub 中 可以异步调用来自客户端的发布调用 因此 我认为有可能同时触发多个发布请求并将其发送到服务器 特别是在批量阈值太低的情况下 如果这是真的 那么 pubsub 客户端如何控制可以创建的同时发布请求的数量 是否
  • URL 片段 (#) 允许的字符

    在互联网上进行一番挖掘后 我无法找到可以用于 URL 片段的字符的良好答案 我正在编写一个 javascript 脚本 它将利用 URL 片段 我不想让 URL 看起来太复杂 从而使 URL 看起来更友好 所以我想知道是否可以使用 或 等字