背景
根据我的经验,当我的 ubuntu 工作站配置在具有事件目录的域上时,为我创建的用户名是根据以下模式。
domain_name\user_name
在 Linux 上使用 Apache 的 userdir 扩展需要在 URL 中使用用户名才能访问主目录中的 public_html。
问题 A:
Chrome 将 URL 中的所有反斜杠“\”字符转换为正斜杠“/”,生成的 url 变得完全不同并且总是结果 < strong>未找到。
另一方面,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/