我将URL存储在数据库中,我希望能够知道两个URL是否完全相同。
通常,末尾的尾部斜杠不会更改您从服务器获得的响应。 (即。http://www.google.com/与http://www.google.com)
相同我是否可以盲目地从任何URL中删除尾部斜杠,而不查看任何内容? 这样安全吗?
我的意思是“不看任何东西”就是我要删除斜线:
http://www.google.com/q?xxx=something&yyy=something/
我知道Web服务器理论上可以 返回完全不同的东西,如果需要的话,我知道有时会在没有斜杠的情况下转到带有斜杠的URL。我唯一的目的是确定两个网址是否相同。
这种方法安全吗?
答案 0 :(得分:19)
不,它并不总是安全的。 Web服务器无论如何都可以解释URL的路径部分。你不知道它会做什么(解析URI)而不使用URL上的GET或HEAD。
答案 1 :(得分:7)
从某种意义上说,你可以获得相同的反应,无论有没有尾随斜线(我不能保证这是真的),但它们肯定意味着不同的东西。考虑引用目录的URL,或者站点作为目录呈现的内容。使用网址
http://www.somesite.com/directory/
...明确表示你要求的目录。如果你砍掉斜杠:
http://www.somesite.com/directory
...该网站将把它作为一个名为“目录”的文件的请求,让所有人感到困惑。它可能会将此解释为对目录的请求,但其含义并不相同,您可能无法获得预期的结果。
有关详细信息,请参阅this article。
答案 2 :(得分:4)
没有。我遇到过这样的情况:根据.htaccess文件中的设置,如果没有尾部斜杠,则无法访问某些目录或“干净的URL”(例如由CMS生成的目录)。这很少见,网站管理员可能会犯错,但可能会发生。
答案 3 :(得分:1)
正如其他人所说,它并不总是安全的。如果它适用于您,我的建议是使用斜杠存储URL,并在进行比较时将其删除。你会受到性能影响,但我认为这比将某人发送到错误的网页要好。