通过将GET参数重写为POST并重定向来隐藏GET参数是个好主意


Is hiding GET parameters by rewriting it to POST and redirect a good idea?

我想从URL中隐藏参数。我使用uuids而不是ids当我在URL中传递它时,它看起来有点长和难看。最初的想法是使用隐藏输入的小表单代替锚,但用表单替换每个锚会很不舒服,而且当锚已经以另一种形式放置时,它也不会起作用。

所以第二个想法是将$_GET重写为$_POST/$_SESSION,然后再次重定向到此脚本。所有变量都将可用,URL将简洁明了。

但这个解决方案的性能如何呢?这样做是个好主意吗?

任何帮助或其他想法都将不胜感激。提前谢谢。

PS。

对于漂亮,不要将GET更改为POST,反之亦然。在许多上下文中,两种HTTP方法的处理方式非常不同,您不希望造成这种副作用。

POST请求不能包含在URL中,即尝试向某人发送到需要POST请求的网站的链接。POST请求篡改浏览器历史记录,即尝试单击后退按钮返回通过POST提交的页面。POST请求不由搜索引擎索引。

POST请求应该用于修改服务器上的数据。不要将它们用于所有常规请求。

如果您需要更漂亮的URL,请找到其他方法来引用您的记录。或者别再关心它了,真的不重要。

如果你普遍采用这种策略,你当然会在整个网站范围内失去所有搜索引擎的优势。当您提交需要保存到存储介质(或发送安全数据https等)的数据时,您应该只真正使用$_POST,否则建议"请求"数据使用$_GET。因此,您需要在这里确定用例并遵循该模式。

我理解你所说的"丑陋"URL,但建议你在寻求补救措施时要谨慎。当然,一种方法是对传入的参数进行url重写,但这需要数据库查找等(以获得映射的漂亮url字符串),因此成本可能很高。

我会带着其他想法回来的。