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

时间:2012-05-03 19:23:25

标签: css firefox url google-chrome backslash

背景

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

  

DOMAIN_NAME \用户名

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

  

http://localhost/~domain_name\user_name

问题A:

Chrome将URL中的所有反斜杠“ \ ”字符转换为正斜杠“ / ”,结果网址变为完全不同且始终结果< strong>未找到。

  

http://localhost/~domain_name/user_name

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

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

问题B:

如果我们在CSS @import构造中使用类似的路径(在路径中包含 \ ),则报告404错误并在报告中报告的URL时,css文件作为HTTP Get Request的导入过程失败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”);

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

尝试使用Firefox中的Slashy插件来帮助你。这是一个指向它的链接。

Slashy

答案 2 :(得分:1)

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

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