我已按照RFC 6122中的规定向XMPP客户端添加了国际域名支持。在RFC中它声明:
虽然XMPP应用程序不通信输出 在线上进行ToASCII操作(称为“ACE标签”),它必须是 可以应用该操作而不会失败 国际化标签。
但是,使用我可用于测试的域(运行Prosody 0.9.4;从其他人处获取有关Ejabberd如何处理此问题的反馈),在XMPP节的“to”字段中发送Unicode名称会导致它们立即返回XMPP错误节并终止流。如果我在发送节之前应用toASCII
操作,则连接成功,我可以开始使用服务器进行身份验证。
所以发送:
<somestanza to="éxample.net"/>
会导致错误,而:
<somestanza to="xn--xample-9ua.net"/>
工作正常。
像这样发送域的ASCII表示(ACE标签)是否正确?如果是这样,当规范“XMPP应用程序不通过线路传递ToASCII操作的输出”时,规范意味着什么?如果没有,我如何确保与行为不当的服务器兼容?