5.7.1 代理操作
根据从客户端接收到的请求,代理通常需要一种为到目的端的请求分配可能的请求参数的方法。该方法完全由正向代理指定,但是也可以依赖于反向代理的特定配置。特别是,反向代理的客户端通常没有标示目的端的定位器,因此有必要在反向代理中有命名空间转换的格式。然而,代理操作的一些方面对于其各种形式是常见的。
如果代理没有使用缓存,那么它仅仅简单的往指定的目的端转发请求。否则,如果代理使用缓存但是没有与转化的请求相匹配的,且已存储的新鲜的响应,那么根据5.6节它需要更新缓存。代理识别请求的option,它应当知道该option是否能够当作在缓存值中查询的键值的一部分。举个例子,由于对于不同Uri路径值的请求指向不同的资源,Uri路径值通常当作Cache-Key的一部分,而token值从来都不能当作Cache-Key的而一部分。对于代理没能识别的但是在选项码中标记为Safe-to-Forward的选项,选项也标示了它是否包含在Cache-Key中(NoCacheKey没有完全设定或者完全设定)。(无法识别并且标记为Unsafe的选项就是4.02Bad Option)。
如果发往目的端的请求超时了,那么必须返回一个5.04(GateWay Timeout)响应。如果发往目的端的请求返回一个无法被代理处理的响应(比如无法识别的关键选项或者消息格式错误),那么必须返回一个5.02(Bad Gateway)响应。否则代理向客户端返回响应。
如果响应在缓存中生成,生成的(或者隐含的)Max-Age选项一定不能超过最初由服务端设定的max-age,max-age表示在缓存中资源存活的时间。举个例子,对于每条响应可以按照下面的公式由代理计算出Max-Age选项:
举个例子,如果代理资源在20秒之前更新,并且最初的Max-Age是60秒,那么代理中该资源的max-age就是40秒。考虑到初始服务器的潜在网络延时,代理生成的响应的max-age值最好比该值偏小。
出现在代理请求里的所有选项都必须被处理。请求中无法被代理识别的Unsafe选项一定会导致代理返回一个4.02(Bad Option)响应。CoAP-to-CoAP代理必须往原始服务端转发不能识别的所有Safe-to-Forward选项。类似的,在响应中无法被CoAP-to-CoAP代理服务端识别的Unsafe选项会导致一个5.02(Bad Gateway)的响应。此外,不被识别的Safe-to-Forward选项必须被转发。
在第十章中详细讨论CoAP和HTTP的跨协议代理。
最后更新于
这有帮助吗?