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

dfty9e19  于 2023-11-14  发布在  Go
关注(0)|答案(3)|浏览(204)

背景

根据我的经验,当我的ubuntu工作站配置在带有active directory的域上时,为我创建的用户名是根据以下模式创建的。
域名\用户名
在Linux上使用apache的userdir扩展将需要在URL中使用用户名才能访问主目录中的public_html。
http://localhost/~domain_name\user_name

问题A:

Chrome将URL中的所有反斜杠“**”字符转换为正斜杠“/”,结果URL将变为完全不同的URL,并且始终显示Not Found**。
http://localhost/~domain_name/user_name
另一方面,Firefox不会将反斜杠转换为正斜杠,所以对目标的http请求是由web服务器提供的。

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

字符串

问题B:

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

wribegjk1#

处理URL中的反斜杠的统一解决方案是使用%5C。RFC 2396根本不允许URL中的该字符(因此任何关于该字符的行为都只是错误恢复行为)。RFC 3986确实允许它,但没有广泛实现,尤其是因为它与现有的URL处理器不完全兼容。
特别是Chrome,它做的事情和IE一样:假设你在任何时候输入反斜杠都是正斜杠,因为这就是Windows文件路径的作用。

disbfnqx

disbfnqx2#

尝试使用Firefox中的Slashy附加组件来帮助你。这里有一个链接。
Slashy

bybem2ql

bybem2ql3#

此反斜杠自动转换问题已在Chrome版本>= 53.0.2785.116中修复。
现在,反斜杠被正确地视为**%5C**。

相关问题