FireFox和Chrome处理url中\(反斜杠)的不同行为

问题描述 投票:0回答:3

背景

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

域名\用户名

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

http://localhost/~域名\用户名

问题A:

Chrome 将 URL 中的所有反斜杠 '\' 字符转换为正斜杠 '/',生成的 url 如下所示,完全不同,并且总是结果 Not Found

http://localhost/~域名/用户名

另一方面,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中的\有什么统一的解决方案?
  • 有没有办法避免用户名中出现\
google-chrome url firefox backslash
3个回答
17
投票

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

Chrome,特别是,与 IE 做同样的事情:假设您每次键入反斜杠时都意味着正斜杠,正如您所发现的,因为这就是 Windows 文件路径的作用。


3
投票

尝试使用 Firefox 中的 Slashy 插件来帮助您完成此操作。这是它的链接。

斜线


0
投票

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

现在反斜杠被正确处理为 %5C

© www.soinside.com 2019 - 2024. All rights reserved.