背景
根据我的经验,当我的 ubuntu 工作站配置在具有活动目录的域上时,为我创建的用户名是根据以下模式。
域名\用户名
在 Linux 上使用 apache 的 userdir 扩展需要在 URL 中使用用户名才能访问主目录中的 public_html。
问题A:
Chrome 将 URL 中的所有反斜杠 '\' 字符转换为正斜杠 '/',生成的 url 如下所示,完全不同,并且总是结果 Not Found。
另一方面,Firefox 不会将反斜杠转换为正斜杠,因此对预期目标的 http 请求由 Web 服务器提供服务。
Common solution is to encode back slash in %5C.
问题B:
如果我们在 CSS @import 构造中使用类似的路径(路径中包含 \),则 css 文件作为 HTTP Get 请求的导入过程会失败并报告 404 错误,并且 404 错误中报告的 URL 会丢失 的存在\ 完全。这意味着 \ 在调用 GET 请求之前已从 URL 中删除。
这种行为在 Firefox 和 Chrome 中很常见。但他们有不常见的解决方案
Firefox 需要转义反斜杠才能在 CSS 导入过程中工作。
@import url("http://localhost/~域名\用户名/path/to/css");
Chrome 像往常一样需要编码反斜杠解决方案。
@import url("http://localhost/~domain_name%5Cuser_name/path/to/css");
处理URL中反斜杠的统一解决方案是使用%5C。 RFC 2396 根本不允许在 URL 中使用该字符(因此与该字符相关的任何行为都只是错误恢复行为)。 RFC 3986 确实允许这样做,但并未广泛实施,尤其是因为它与现有 URL 处理器不完全兼容。
Chrome,特别是,与 IE 做同样的事情:假设您每次键入反斜杠时都意味着正斜杠,正如您所发现的,因为这就是 Windows 文件路径的作用。
尝试使用 Firefox 中的 Slashy 插件来帮助您完成此操作。这是它的链接。
此反斜杠自动转换问题已在 Chrome 版本 >= 53.0.2785.116 中修复。
现在反斜杠被正确处理为 %5C。