Jabberd/XMPP 学习之三:jabber/xmpp中to,from、message,id,type,xml:lang的使用

前端之家收集整理的这篇文章主要介绍了Jabberd/XMPP 学习之三:jabber/xmpp中to,from、message,id,type,xml:lang的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下五种属性通用于 message,presence,和 IQ 节:

to

'to' 属性表示节的预期接收者的JID.
在'jabber:client'名字空间中,一个节应该(SHOULD)处理一个'to'属性,尽管由服务器处理的从客户端发给服务器的节(如,发送给服务器用于广播给其他实体的出席信息) 应该不(SHOULD NOT)处理'to'属性.
在'jabber:server'名字空间中,一个节必须(MUST)处理一个'to'属性; 如果一个服务器收到一个不符合此限定的节,它必须(MUST)生成一个<improper-addressing/>流错误条件并终止和这个非法服务器的XML流和相应的TCP连接.
如果'to'属性的值非法或无法联络,发现这个事实的实体(通常是发送者或接收者的服务器)必须(MUST)返回一个适当的错误给发送者,错误节的'from'属性设置成非法节的提供的'to'属性的值.

from

'from' 属性表示发送者的 JID .
当一个服务器接收了一个符合'jabber:client'名字空间的合法流的XML节,它必须(MUST)做以下步骤中的一步:
  1. 验证客户端提供的'from'属性值就是那个相关实体连接的资源
  2. 生成这个节的已连接的资源增加一个'from'地址(由服务器决定是纯JID或全JID)(参见 地址的决定 Determination of Addresses (第三章第五节))
  3. 如果一个客户端试图发送一个XML节,而它的'from'属性和这个实体已连接的资源不符,服务器应该(SHOULD)返回一个<invalid-from/>流错误条件给客户端. 如果一个客户端试图通过一个尚未验证的流发送一个XML节,服务器应该(SHOULD)返回一个<not-authorized/>流错误条件给客户端. 如果生成了,所有这些条件必须(MUST)导致流的关闭和相应的TCP连接的终止; 这有助于防止不诚实的客户的拒绝服务攻击.
当一个服务器从服务器自身生成一个节用于一个已连接的客户端的信息发布(例如,在服务器为客户端提供数据存储服务的情况下),这个节必须(MUST) (1) 不包含 'from' 属性 或 (2) 包含一个'from'属性,它的值是这个账号的纯 JID (<node@domain>) 或 客户端的全 JID (<node@domain/resource>). 如果节不是由服务器自身生成的,那么一个服务器不能(MUST NOT)发送不带'from'属性的节. 当一个客户端接收到一个不包含'from'属性的节,它必须(MUST)认为这个节是从客户端连接的服务器发来的.
在'jabber:server'名字空间,一个节必须(MUST)处理一个'from'属性; 如果一个服务器接收到一个不符合此限定的节,它必须(MUST)生成一个<improper-addressing/>流错误条件. 而且,'from'属性的 JID值的域名ID部分必须(MUST)和以SASL协商连接或以回拨协商连接的发送服务器的主机名(或任何合法的域,如发送服务器主机名的合法子域,或其他寄宿在发送服务器上的合法域)吻合; 如果一个服务器接收到的节不符合此限定,它必须(MUST)生成一个<invalid-from/>流错误条件. 所有这些条件都必须(MUST)导致流的关闭和相应的TCP连接的终止; 这有助于防止不诚实的客户端发起的拒绝服务攻击.

id

可选的'id' 属性可以(MAY)用于为节的内部跟踪发送实体,从IQ节 语义来讲,就是通过发送和接收这些节来跟踪“请求-应答”型的交互行为。这个可选的(OPTIONAL)'id'属性值在一个域或一个流中是全局唯一的。IQ节语义学中对此有附加限定;见IQ Semantics (第九章第二节第三小节)。

type

'type' 属性指明消息、出席信息或IQ节的意图或上下文的详细信息。'type'属性所允许的值依据节的类型是消息、出席信息还是IQ而有很大不同; 用于消息和出席信息节的值定义在即时消息和出席信息应用中,所以在[XMPP-IM|XMPP文档列表/XMPP正式RFC标准/RFC3921]中定义,反之用于IQ节的值定义了在一个 请求-应答 的“会话”中IQ节的角色,所以定义在IQ语义学中(第九章第二节第三小节)。 所有三种节的通用'type'值是"error";见Stanza Errors (第九章第三节)。

xml:lang

如果一个节包含用于显示给人human user看的XML字符数据(在RFC 2277中有所解释[CHARSET],"internationalization is for humans"),这个节应该(SHOULD)处理一个'xml:lang'属性(定义在第二章第十二节[XML])。 'xml:lang'属性的值指明任何一个人类可读的XML字符数据的缺省语言, 它可以(MAY)被特定的子元素的'xml:lang'值重载。 如果一个节不处理一个'xml:lang'属性,一个实现必须(MUST)认为缺省的语言就是流属性中定义的语言(第四章第四节). 'xml:lang'属性值必须(MUST)是一个 NMTOKEN 并且必须(MUST)遵守RFC 3066[LANGTAGS]中定义的格式.

转载:http://wiki.jabbercn.org/RFC3920#.E8.B5.84.E6.BA.90.E7.BB.91.E5.AE.9A

猜你在找的XML相关文章