我正在用PHP工作。 我有3页, A是纯HTML,包含搜索字段。 B是.php并返回搜索结果。 C也是php,允许用户更新显示结果的一些细节。
当我正在刷新我的B页面或从C回到我的时候 得到这条消息
“要显示此页面,Firefox必须 发送重复任何信息 动作(例如搜索或订单 确认)已执行 早期的“。
我看到“当我使用” POST “方法时,我收到此消息,如果我使用了GET则 我没有。
任何好友解释我,为什么???
答案 0 :(得分:3)
应使用GET方法从网页获取信息。
POST方法应该用于向网页发送信息。
它要求您确认是否再次发送信息的原因是因为如果他们按下该表单并不总是意图重新发布表单。一个例子是在网上商店,您不希望重新发布表格来购买产品两次,否则您可能需要两次为产品付费。这当然是理论上的,因为制作在线商店的人应该确保不会发生意外购买。
此外,如果您使用GET,则所有信息都会附加到PHP页面的URL中。这是一个潜在的安全问题,尤其是在表单内容是私有的情况下。对于此类表单,您应该使用POST。
答案 1 :(得分:2)
疯狂猜测, POST没有写入URL,所以你需要重新发送它,而GET,当你点击返回B时,参数仍然在URL中,所以你不需要重新发送。
Mozilla添加了此消息,警告您两次发送信息。 就像注册一样,你不想再注册两次。
答案 2 :(得分:1)
Firefox开发人员添加了警告POST方法。它会在后退/前进的情况下警告你POST。
这是为用户增加的安全措施。因为,大多数购物车/银行门户使用POST方法进行结账/交易确认(实际上我没有看到或开发任何Web应用程序以使用get方法实现此目的)。
因此,Firefox(以及大多数其他常见浏览器)在这种情况下警告您(当您间接发送POST请求时,即使用后退/前进/刷新按钮)。这可以防止用户多次结账。
添加此警告的另一个原因是,有时chekout很耗时。因此,在原始提交后经过一段时间后,一些不耐烦的用户认为浏览器/服务器已停止工作。因此,他们倾向于按下刷新按钮。这个警告给了他们一个很好的暗示。
答案 3 :(得分:0)
我认为重点是GET请求应该用于获取信息而不更改服务器上的任何内容,因此如果您重新加载相同的信息则没有问题。 POST请求应该用于更改服务器上的数据,以便在重新加载可能产生不良影响的页面时使用。
答案 4 :(得分:0)
Firefox通常允许您从C页面导航回B页面。但是,如果您的B页不在缓存中,可能是因为它发送了Cache-control:no-store标头,那么您将收到POSTDATA警告。
另一方面,显式重新加载页面B将始终生成POSTDATA警告。
答案 5 :(得分:-2)
当您在POST方法中提交数据时,它会将标题发送到您提交的页面。当您刷新页面或返回时,浏览器会重复您的POST请求,Firefox会向您发出警告。