Apache Unicode AuthName字符串?

时间:2013-01-24 05:40:01

标签: apache unicode apache2

我为Apache上的基本身份验证添加了用户名和密码,我想为我的用户提供Unicode AuthName字符串。我的httpd.conf看起来像这样:

<Location "/">
    AuthType Basic
    AuthName "Some Unicode Here"
    AuthUserFile /somewhere/htpasswd
    Require valid-user
</Location>

但是“Some Unicode Here”在我的浏览器中似乎总是垃圾。如何使其正常显示?

2 个答案:

答案 0 :(得分:4)

您可能无法使其正常工作,缺少浏览器支持是主要问题,请参阅What character encoding should I use for a HTTP header?AuthNameWWW-Authenticate标题中显示为领域:

WWW-Authenticate: Basic realm="Some Unicode Here"

一些快速实验表明:

  • Apache不对配置中的UTF-8 AuthName字符串进行编码,它按原样发送
  • Firefox,MSIE和Chrome全部(正确地)将UTF-8字节序列解释为ISO-8859-1(因此可能错误地显示)
  • none支持HTTP-RFC-2616所述的RFC-2047 MIME编码,字面上显示为=?utf-8?B?U29tZSBVbmljb2RlIEhlcmUK?=

(我建议mod_auth_tkt作为基于cookie的替代基本身份验证,如果你有选项,它有一个drop-in htpasswd样式perl脚本,并设置REMOTE_USER,你只需要滚动你自己的形式。)

答案 1 :(得分:2)

我找到了包含突出字符的.htaccess AuthName的正确解决方案:

使用文本编辑器或&#34; iconv&#34;以正确的编码保存文件。

在Sublime 3中,我使用了文件 - &gt;使用编码保存 - &gt;西方ISO-8859-1