【问题标题】:Special Characters in Basic Authentication username do not work with Chrome but works in IE and Firefox基本身份验证用户名中的特殊字符不适用于 Chrome,但适用于 IE 和 Firefox
【发布时间】:2017-09-24 16:01:16
【问题描述】:

我有一个配置了基本身份验证和 LDAP 的 Web 服务器。通常,我可以使用包含所有 3 个浏览器的英文字母的用户名登录。但是,如果用户名包含特殊字符(例如 RÈM WÉB 等德国名称),Web 服务器会返回 401,我会再次弹出身份验证,即 apache 无法验证。

检查 apache access.log 后,我可以看出当我从 firefox 和 chrome 登录时,编码似乎不同。这种编码是由浏览器决定的还是由网络服务器决定的?我认为这是浏览器导致的,Firefox 可以正常工作。我在哪里可以在 chrome 中设置此编码方案?

另外,为了确认它是浏览器的问题,我可以看到在 Firefox 和 Chrome 中发送的授权标头对于同一用户是不同的。显然,浏览器没有使用相同的方案对标头进行编码。有什么建议吗?

更多调试表明 firefox(以及 IE)使用 ISO8859-1 进行编码,而 chrome 使用 UTF-8。

即使 Apache Web 服务器多次尝试使用(如果 ISO8859-1 返回 401,它应该使用 UTF-8 再次尝试),我也可以。浏览器或网络服务器解决方案都可以。

【问题讨论】:

标签: google-chrome authentication firefox google-chrome-devtools basic-authentication


【解决方案1】:

尝试更改登录页面上的字符集以使用 ISO8859-1

<meta charset="ISO8859-1" />

【讨论】:

  • 我们没有登录页面。直接使用身份验证弹出窗口。如果登录成功,apache会重定向到主页。
  • Apache 中的此设置适用于响应内容类型,而不适用于请求标头。
  • 如果我正确阅读了@MichielvanOosterhout 的答案,您将必须检测除 ISO8859-1 以外的编码并正确解码stackoverflow.com/questions/7242316/…
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2012-01-27
  • 2012-02-14
  • 2015-05-07
  • 1970-01-01
相关资源
最近更新 更多