什么是CoAP的链接格式资源的基本uri

问题描述

我在阅读RFC6690上有关确定链接格式的上下文URI的规则时

我无法理解“链接格式资源的基本uri”的含义

2.1。目标和上下文URI

每个链接传达一个目标URI作为URI参考内角 括号(“ ”)。链接的上下文URI(也称为基本URI) [RFC3986中的内容)由以下规则决定 规格:

(a)上下文URI被指定为锚参数。

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

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

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

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

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

我知道原点是defined as a combination of URI scheme,host name,and port number

我也了解基本URI是绝对URI,相对URI可以针对该绝对URI进行解析。

但是我无法理解“基本uri” 在RFC6690第2.1节中的含义

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

解决方法

RFC6690在这里混合了概念(“链接的上下文URI(也称为基本URI [...])” –上下文和基本URI是不同的概念)。基本URI在这里是指anchor属性所指向的URI(丢失时默认为请求文档的URI)。

普遍的解释似乎是链接的 context 是根据请求的URI的原点解析的锚点属性(当没有锚点时,它是 的原点)的URI),链接的 target 是针对上下文原点解析的尖括号之间的部分。这不完全是这里写的内容,但至少可以与同一文档中给出的示例一起使用。

此处列出的规则是如此混乱(最糟糕的是,与Link标头中的非常相似的规则不同),即使您遵循这些规则,也无法期望互操作性:在所有实现中我对CoRE mailing list进行了调查,但没有人认为决议中的锚点正确。我建议您坚持使用受限链接格式(在Resource Directory Draft中定义),该格式与链接标头和RFC6690的解析步骤兼容,并附带一个演练。

(从长远来看,我确实很希望所有链接格式都可以由CoRAL代替,但是进展并不足够,我不建议将其用于生产环境附近的任何地方。)