查询中删除了与错误日志中出现的&符号的URL

时间:2010-06-07 14:19:57

标签: php firefox url redirect safari

我注意到最近我的错误日志中出现了一个奇怪的现象。如果作为处理表单的结果,我将用户重定向到网址http://www.example.com/index.php?foo=bar&bar=baz,我会在日志中看到以下两个网址

http://www.example.com/index.php?foo=barbar=baz
http://www.example.com/index.php?foo=bar&bar=baz

第一个显然是不正确的,会导致我的应用程序重定向到404.它总是首先出现,通常是第二个之前的第二个。 404页面没有进行重定向,因此浏览器似乎正在尝试这两个版本。首先,查看我的服务器日志让我相信它只影响了Firefox 3.6.3,但我发现了Safari受到影响的一个例子。虽然它可以在用户会话中多次出现,但它会间歇性地发生。我从来没有能够让它发生在我身上。

关于问题的性质或解决方案的任何想法?

编辑:由于它出现在一些答案中,我想我会讨论重定向的本质。它是使用header()在PHP中完成的,用于设置Location标头。我从未见过专门要求标题为URL或HTML编码的规范,因此URL不会以任何方式编码或转义。

2 个答案:

答案 0 :(得分:0)

我认为这不会是浏览器。查看页面中是否有任何图像被调用,或者是否有字符串功能剥离了&符号。奇怪的是。

答案 1 :(得分:0)

不确定您是如何进行重定向的,但您可能需要对您的网址进行网址编码。浏览器可能会错误解释barr&作为一个特殊的角色。

可能想要审核:http://htmlhelp.com/tools/validator/problems.html