含特殊字符的用户名导致Domino基础认证失败问题咨询
解决Domino基础认证中含特殊字符用户名的问题
核心结论
需要启用并配置UTF-8字符编码,同时确保Angular端的编码逻辑与Domino端一致,才能解决特殊字符导致的认证失败问题。
Domino端配置调整
- 打开Domino服务器文档,切换到「Internet协议 > HTTP」标签页
- 在「字符集」区域,将「默认字符集」设置为
UTF-8 - 勾选「启用URL编码」选项(若存在)
- 重启Domino HTTP服务使配置生效
Angular端编码逻辑修正
浏览器会自动用UTF-8编码用户名/密码后再做Base64转换,但Angular中直接使用btoa()函数会因默认采用UTF-16编码,导致ö这类特殊字符处理错误。需替换为UTF-8编码逻辑:
// 处理UTF-8字符的Basic Auth编码函数 function generateBasicAuthHeader(username: string, password: string): string { const utf8Bytes = new TextEncoder().encode(`${username}:${password}`); const base64 = btoa(String.fromCharCode(...utf8Bytes)); return `Basic ${base64}`; }
验证要点
- 生成的Authorization头需确保特殊字符被正确编码为UTF-8后再Base64(可通过编码工具对比结果)
- 检查Domino服务器日志,确认无编码相关错误提示
内容的提问来源于stack exchange,提问作者Vijayakumar Oorappan
相关产品推荐
相关产品推荐

