Servlets &引用;如果不重新发送信息,则无法刷新页面;使用http post方法但不使用get为什么?
当我从post方法中转发请求时,会出现一个确认警报 带有消息“如果不重新发送信息,则无法刷新页面”。 但是,当通过get方法进行转发时,此警报框不会出现 原因是什么?Servlets &引用;如果不重新发送信息,则无法刷新页面;使用http post方法但不使用get为什么?,servlets,Servlets,当我从post方法中转发请求时,会出现一个确认警报 带有消息“如果不重新发送信息,则无法刷新页面”。 但是,当通过get方法进行转发时,此警报框不会出现 原因是什么? 请帮忙 因为在HTTP规范中,POST用于非幂等请求,因为它们修改服务器上的状态(例如,通过向类别中添加新产品),如果请求被重新写入,将再次修改该状态(例如,它将在类别中创建新产品) 另一方面,GET用于幂等请求。例如,google搜索是幂等的。搜索两次相同的内容不会修改服务器上的任何内容,并且重新提交相同的请求不会产生任何不必要
请帮忙 因为在HTTP规范中,POST用于非幂等请求,因为它们修改服务器上的状态(例如,通过向类别中添加新产品),如果请求被重新写入,将再次修改该状态(例如,它将在类别中创建新产品) 另一方面,GET用于幂等请求。例如,google搜索是幂等的。搜索两次相同的内容不会修改服务器上的任何内容,并且重新提交相同的请求不会产生任何不必要的影响 浏览器希望web应用程序遵守此约定,并因此在重新提交POST请求之前警告用户此不必要的副作用
通常的做法是遵循这种模式,让用户在发布后刷新,而不会出现这种恼人的弹出窗口,也不会产生不必要的副作用。因为GET请求在URL中包含这些参数(例如URL以
?param1=foo¶m2=bar
结尾)。GET请求通常不涉及更改服务器状态的敏感数据或操作。从URL,你知道你在发送什么
在POST中,参数是“隐藏”的,作为HTTP请求的一部分在后台提交,通过查看URL无法看到它们。这些参数会导致服务器更改状态,如果相同的数据传输两次(例如,您会意外地从网络商店购买两次),则可能会导致问题。浏览器会让你知道,如果你没有意识到你会重新发送它。这些答案对你有帮助吗?