16

背景

根据我的经验,当我的 ubuntu 工作站配置在具有活动目录的域上时,为我创建的用户名是根据以下模式。

域名\用户名

在 linux 上使用 apache的userdir扩展需要在 URL 中使用用户名才能访问主目录中的 public_html。

http://localhost/~domain_name\user_name

问题一:

Chrome 将 URL 中的所有反斜杠 ' \ ' 字符转换为正斜杠 ' / ' 并且生成的 url 变得完全不同,并且总是导致Not Found

http://localhost/~domain_name/user_name

另一方面,Firefox不会将反斜杠转换为正斜杠,因此对预期目标的 http 请求由 Web 服务器提供。

Common solution is to encode back slash in %5C.

问题 B:

如果我们在 CSS @import 构造中使用类似的路径(路径中包含\),则作为 HTTP Get 请求的 css 文件的导入过程将失败并报告 404 错误,并且在 404 错误中报告的 URL 完全错过了\的存在。这意味着在调用 GET 请求之前从 URL 中删除了\ 。

这种行为在 Firefox 和 Chrome 中很常见。但他们有不常见的解决方案

Firefox 需要转义反斜杠才能在 css 导入过程中工作。

@import url(" http://localhost/~domain_name\\user_name/path/to/css ");

Chrome 像往常一样需要编码的反斜杠解决方案。

@import url(" http://localhost/~domain_name%5Cuser_name/path/to/css ");

  • 处理URL中的\的统一解决方案是什么?
  • 有没有办法避免\出现在用户名中?
4

3 回答 3

13

处理 URL 中的反斜杠的统一解决方案是使用 %5C。RFC 2396 根本不允许在 URL 中使用该字符(因此有关该字符的任何行为都只是错误恢复行为)。RFC 3986 确实允许这样做,但没有得到广泛实施,尤其是因为它与现有的 URL 处理器不完全兼容。

尤其是 Chrome,它与 IE 做同样的事情:假设您在任何时候键入反斜杠时都表示正斜杠,正如您所发现的那样,因为这就是 Windows 文件路径的作用。

于 2012-05-04T07:33:03.087 回答
4

尝试使用 Firefox 中的 Slashy 插件来帮助您。这里是它的链接。

斜杠

于 2014-05-19T11:57:07.333 回答
2

此反斜杠自动转换问题已在 Chrome 版本 >= 53.0.2785.116 中修复。

现在反斜杠被正确地视为%5C

于 2016-10-04T19:23:19.537 回答