在RFC 6122中指定的JID中实现IDN

Sam*_*ted 5 standards xmpp rfc idn

我已经按照RFC 6122中的规定向XMPP客户端添加了国际域名支持.在RFC中它声明:

虽然XMPP应用程序不通过线路传递ToASCII操作的输出(称为"ACE标签"),但必须能够应用该操作而不会使每个国际化标签失败.

但是,使用我可用于测试的域(运行Prosody 0.9.4;正在努力获取其他人关于Ejabberd如何处理此问题的反馈),在XMPP节的"to"字段中发送Unicode名称会导致他们立即返回XMPP错误节并终止流.如果我toASCII在发送节之前应用该操作,则连接成功,我可以开始与服务器进行身份验证.

所以发送:

<somestanza to="éxample.net"/>
Run Code Online (Sandbox Code Playgroud)

会导致错误,同时:

<somestanza to="xn--xample-9ua.net"/>
Run Code Online (Sandbox Code Playgroud)

工作良好.

发送域的ASCII表示(ACE标签)是否正确?如果是这样,当规范"XMPP应用程序不通过线路传递ToASCII操作的输出"时,规范意味着什么?如果没有,我如何确保与行为不当的服务器兼容?