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

标签 css firefox url google-chrome backslash

背景

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

domain_name\user_name

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

http://localhost/~domain_name\user_name

问题 A:

Chrome 将 URL 中的所有反斜杠“\”字符转换为正斜杠“/”,生成的 url 变得完全不同并且总是结果 < strong>未找到。

http://localhost/~domain_name/user_name

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

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

问题 B:

如果我们在CSS @import 构造中使用类似的路径(路径中包含\),作为HTTP Get Request 的css 文件导入过程会失败,报404 错误,并且在404 错误完全错过了 \ 的存在。这意味着 \ 在调用 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中\的统一方案是什么?
  • 有没有办法避免 \ 出现在用户名中?

最佳答案

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

尤其是 Chrome,与 IE 做同样的事情:假设您每次键入反斜杠时都是正斜杠,正如您发现的那样,因为 Windows 文件路径就是这样做的。

关于css - FireFox 和 Chrome 在 url 中处理\(反斜杠)的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10438008/

相关文章:

html - CSS 和 HTML 翻转并显示事件目标

Javascript 在 Firefox 中不发送 post 参数

url - .htaccess RewriteRule 将目录类型的 URL 结构转换为查询

php - 如何用PHP动态创建文件夹

javascript - 具有更多 jQuery 功能的灯箱?

html - 在固定内联 block 中垂直居中各种内容

Chrome 和 Firefox 中的 CSS 网格行为不同

php - 在 URL App Inventor 中使用大于 ( >= )

javascript - Chrome 扩展用 newtab.html 覆盖 newtab,然后访问 cookie

javascript - 循环导致 Firefox 崩溃