我有一个向网页提供一长串参数的应用程序,因此我必须使用POST而不是GET。问题是当页面显示并用户单击“后退”按钮时,Firefox会显示警告:
要显示此页面,Firefox必须发送将重复之前执行的任何操作(例如搜索或订单确认)的信息。
由于应用程序的构建方式使“返回”是一种非常常见的操作,因此对于最终用户而言确实很烦人。
基本上,我想按照此页面的方式进行操作:
http://www.pikanya.net/testcache/
输入内容,提交,然后单击“上一步”按钮。没有警告,它只是返回。
谷歌搜索,我发现这可能是Firefox 3中的错误,但是我想以某种方式获得这种行为,即使他们“修复”了它。
我猜它可以与某些HTTP标头一起使用,但是到底是哪个?
解决方法之一是将POST重定向到重定向到GET的页面-请参阅Wikipedia上的Post / Redirect / Get。
假设您的POST是4K表单数据。大概您的服务器会对这些数据执行某些操作,而不是仅显示一次并将其丢弃,例如将其保存在数据库中。继续这样做,或者如果它是一个巨大的搜索表单,请在数据库中创建它的临时副本,该副本将在几天后或使用空间限制时基于LRU清除。现在创建可以使用GET访问的数据的表示形式。如果是临时的,请为其生成一个ID并将其用作URL;如果是永久数据集,则可能具有ID或可用于URL的名称。在最坏的情况下,像使用很小的url这样的算法会将大的URL折叠成很小的URL。重定向POST以获取数据表示。