首页 > 解决方案 > CoAP 的链接格式资源的基本 uri 是什么

问题描述

当我阅读关于以链接格式确定上下文 URI 的规则的RFC6690时

我不明白“链接格式资源的基本uri”是什么意思

2.1。目标和上下文 URI

每个链接都将一个目标 URI 作为尖括号 ("<>") 内的 URI 引用。链接的上下文 URI(在 [ RFC3986 ] 中也称为基本 URI)由本规范中的以下规则确定:

(a) 上下文 URI 在指定时设置为锚参数。

我的理解:只需检查“锚”属性

(b) 目标 URI 的来源,当指定时。

我的理解:如果目标 URI 是绝对 uri(包含原点),则使用其原点(没有路径和查询)作为上下文

(c)链接格式资源的基础 URI 的来源。

我的理解:我迷路了,我应该在哪里寻找这个基础uri?

我了解来源被定义为 URI 方案、主机名和端口号的组合

我也明白 Base URI 是一个绝对 URI,相对 URI 可以解析。

但我不明白“base uri”在 RFC6690 第 2.1 节的上下文中是什么意思

如果资源目标 uri 不是绝对 uri 并且没有来源,那么如何找到链接格式资源的基本 uri 的来源?

标签: urirfccoap

解决方案


RFC6690 在这里混合了一些概念(“链接的上下文 URI(也称为基本 URI[...])”——上下文和基本 URI 是不同的概念)。此处的基本 URI 是指锚属性指向的 URI(如果缺少该属性,则默认为请求文档的 URI)。

普遍的解释似乎是链接的上下文是根据请求的 URI 的来源解析的锚属性(当没有锚时,它请求的 URI 的来源),链接的目标是尖括号之间的部分解决了上下文的起源。这并不完全是那里写的,但至少它适用于同一文档中给出的示例。

那里列出的规则非常混乱(而且,最糟糕的是,与 Link 标头中非常相似的规则不同),即使您严格遵守它们,您也无法期望互操作性:在我调查的所有实现中CoRE 邮件列表,没有人在决议中正确考虑了锚点。我建议你坚持使用 Limited Link Format(在Resource Directory Draft 中定义),它与 Link headers 和 RFC6690 的解析步骤兼容,并附有演练。

(从长远来看,我对所有链接格式都被CorAL取代寄予厚望,但进展还不够远,我建议在生产环境附近的任何地方实施它。)


推荐阅读