问题标签 [rfc3986]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
757 浏览

maven - 在 Maven 依赖项中定位资源的 URI 方案?

我需要一个 URI 来定位 Maven 依赖项中的资源。例如,如果我声明一个依赖项:

我想访问/path/to/file.xslxslLibrary 中的 ot。当然,我可以通过类路径资源加载访问,但我需要一个 URI 来指向该资源。

URI 方案(根据RFC 3986)是否已经在 IETF 注册了此类事情?

我想注册类似的东西:

在此先感谢,克里斯托夫

0 投票
0 回答
43 浏览

python - Flask URL 中的 userinfo 组件

我希望我的用户使用以下语法连接到我的 Flask 应用程序:

由 RFC 3986(第 3.2 章)定义。

有没有办法可以username:password从 Flask 访问该部分?

例如,在我的本地服务器上,如果我http://username@localhost:5000/从 Chrome 访问,我在 Flask 的request对象中看不到任何内容,并且该username@部分会立即从地址栏中消失。

xoxo


5月1日编辑:

这个问题已被标记为重复Flask HTTP Basicauth - 它是如何工作的?

但是,我的问题与基本身份验证协议无关。request.authorizationNone我而言。


第二次编辑:

好吧,我的错,事实证明username:password@host确实实现了基本的身份验证协议,但是这种语法已被弃用,并且不再被某些浏览器实现,包括 Chrome(见本页底部)

0 投票
3 回答
325 浏览

html - 在相对部分使用多个斜杠解析 URI

我必须在 perl 中编写一个从 html 解析 uris 的脚本。无论如何,真正的问题是如何解决相对 uris。

我有基本 URI(html 中的基本 href),例如 http://a/b/c/d;p?q (让我们通过rfc3986)和其他不同的 URI:

/g, //g, ///g, ////g, h//g, g////h, h///g:f

在这个 RFC 的第 5.4.1 节(上面的链接)中,只有 //g 的示例:

"//g" = "http://g"

那么所有其他情况呢?据我从rfc 3986, section 3.3了解,允许使用多个斜杠。那么,以下分辨率是否正确?

"///g" = "http://a/b/c///g"

或者应该是什么?有没有人可以更好地解释它并用没有过时的 rfc 或文档来证明它?

更新#1:尝试查看此工作网址 - https:///stackoverflow.com////////a////10161264/////6618577

这里发生了什么?

0 投票
0 回答
147 浏览

rss - W3C RSS 验证器:无效的 URL

验证页面 在此处输入图像描述

RSS 项目

在此处输入图像描述

我正在尝试使用https://validator.w3.org/验证我的 RSS 提要 我收到错误

此 URL 有效且符合 RFC 3986。我无法弄清楚此 URL 有什么问题。如果我从此 URL 中删除“.news”,我的 RSS 将得到验证。“.news”域名有什么问题?它是有效的 TLD 标签。

0 投票
4 回答
10470 浏览

java - '+'(加号)未使用字符串 url 使用 RestTemplate 编码,但解释为 ''(空格)

我们正在从 Java 8 迁移到 Java 11,从而从 Spring Boot 1.5.6 迁移到 2.1.2。我们注意到,在使用 RestTemplate 时,“+”号不再编码为“%2B”(由 SPR-14828 更改)。这没关系,因为 RFC3986 没有将“+”列为保留字符,但在 Spring Boot 端点中接收时仍将其解释为“”(空格)。

我们有一个搜索查询,它可以将可选的时间戳作为查询参数。查询看起来像http://example.com/search?beforeTimestamp=2019-01-21T14:56:50%2B00:00.

如果没有双重编码,我们无法弄清楚如何发送编码的加号。查询参数2019-01-21T14:56:50+00:00将被解释为2019-01-21T14:56:50 00:00. 如果我们自己对参数进行编码 ( 2019-01-21T14:56:50%2B00:00),那么它将被接收并解释为2019-01-21T14:56:50%252B00:00

另一个约束是,我们希望在设置 restTemplate 时在别处设置基本 url,而不是在执行查询的位置。

或者,有没有办法强制“+”不被端点解释为“”?

我写了一个简短的例子,展示了一些实现更严格编码的方法,它们的缺点解释为注释:

0 投票
2 回答
229 浏览

spring-boot - 正确解析包含“+”字符的字段

我遇到了一个奇怪的情况,我在https://github.com/lgueye/uri-parameters-behavior中复制了它

由于我们在方法中请求我们的一个后端时迁移到spring-boot 2 ( spring framework 5GET ),我们遇到了以下情况:所有带有 char 的字段在到达后端时+都被更改为(whitespace) char

以下值已更改:

  • +412386789(电话号码)转入** 412386789**
  • 2019-03-22T17:18:39.621+02:00 (java8 ZonedDateTime) 进入2019-03-22T17:18:39.621 02:00(导致org.springframework.validation.BindException

我在 stackoverflow ( https://github.com/spring-projects/spring-framework/issues/14464#issuecomment-453397378 ) 和 github ( https://github.com/spring-projects/spring -框架/问题/21577

我已经实现了一个 mockMvc 单元测试和一个集成测试

单元测试正常运行集成测试失败(如我们的生产)

任何人都可以帮我解决这个问题吗?我的目标显然是让集成测试通过。

谢谢您的帮助。

路易斯

0 投票
1 回答
918 浏览

swift - 什么样的 URL 不符合 RFC 3986 但符合 RFC 1808、RFC 1738 和 RFC 2732?

的文档URLComponents.init(url:resolvingAgainstBaseURL:)说:

返回初始化的 URL 组件对象,如果无法解析 URL,则返回 nil。

知道:

我假设URLComponents当 URL 符合 RFC 1808/1738/2732 但不符合 RFC 3986 时,初始化将失败。那是什么类型的 URL?有什么例子吗?

到目前为止,我唯一的提示可能与不同的保留字符有关?

0 投票
1 回答
166 浏览

uri - 为什么规范/词汇的 URI 包含日期信息?

大多数示例命名空间 URI 似乎在其路径中包含年/月/日的某种组合:

rdf:http://www.w3.org/1999/02/22-rdf-syntax-ns#

rdfs:http://www.w3.org/2000/01/rdf-schema#>

当词汇表中包含的概念不完全是临时的时,为什么在 URI 中包含部分创建日期是有意义的(对我来说)这并不明显。

编辑

由于旧的 w3c(以及可能的其他组织)注释仍然存在于语义网络的 SEO 上,因此可能会产生额外的混乱。例如,来自 w3c 用户组的此注释建议在 URI 中使用日期。

可管理性。 以您可以管理的方式发布您的 URI。一种好的做法是在 URI 路径中包含当前年份,这样您就可以每年更改 URI 模式,而不会破坏旧的 URI。

@cygri 仍然正确(链接是 2010 年之前的),只是为遇到冲突信息的人指出这一点。

0 投票
0 回答
258 浏览

r - 使用 R 对 RFC1738 进行 URL 解码(PHP 默认)

我需要使用使用 RFC 1738 进行 URL 编码的 R字符串进行解码。

这些字符串来自 PHP 请求,并使用默认使用 RFC1738http_build_query的 PHP 函数进行编码。

例如,Hello, World!变成Hello%2C+world%21

您可以使用以下 PHP 代码轻松在线试用:

不幸的是,R 基础 URL 编码使用 RFC 3986,这是不同的!

我想"Hello, world!"回来!我怎么能用 R 做到这一点?

我很高兴将+符号替换为空格,但如果这是您的答案,请说明为什么这是正确的。到目前为止,我的研究并未表明 RFC 1738正是带有加号的 RFC 3986,我不想要奇怪的边缘情况......

0 投票
0 回答
1202 浏览

tomcat - 如何使 Tomcat 在 GET 参数中支持非 RFC7230/ RFC3986 字符?

Tomcat从7.0升级到8.5后,发现GET请求参数中如果包含中文或韩文字符,tomcat会抛出IllegalArgumentException: Invalid character found in the request target。

原因是tomcat不再支持RFC 7230和RFC 3986以外的字符。我们尝试了一些解决方案:

  1. relaxedQueryChars在server.xml中根据 配置

但是,该值可以是以下字符的任意组合:" < > [ \ ] ^{ | }`,值中存在的任何其他字符都将被忽略。这意味着中文/韩文参数仍然会出错。

  1. 修改客户端,在请求api时对各个参数进行编码。
    可以解决问题,但是好像不可行,因为我们不能修改所有的客户端,比如发布的APP不能修改。

有什么好的通用解决方案吗?我希望可以更改一些 tomcat 配置,使其在 GET 参数中支持中文/韩文字符。