Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets &引用;如果不重新发送信息,则无法刷新页面;使用http post方法但不使用get为什么?_Servlets - Fatal编程技术网

Servlets &引用;如果不重新发送信息,则无法刷新页面;使用http post方法但不使用get为什么?

Servlets &引用;如果不重新发送信息,则无法刷新页面;使用http post方法但不使用get为什么?,servlets,Servlets,当我从post方法中转发请求时,会出现一个确认警报 带有消息“如果不重新发送信息,则无法刷新页面”。 但是,当通过get方法进行转发时,此警报框不会出现 原因是什么? 请帮忙 因为在HTTP规范中,POST用于非幂等请求,因为它们修改服务器上的状态(例如,通过向类别中添加新产品),如果请求被重新写入,将再次修改该状态(例如,它将在类别中创建新产品) 另一方面,GET用于幂等请求。例如,google搜索是幂等的。搜索两次相同的内容不会修改服务器上的任何内容,并且重新提交相同的请求不会产生任何不必要

当我从post方法中转发请求时,会出现一个确认警报 带有消息“如果不重新发送信息,则无法刷新页面”。 但是,当通过get方法进行转发时,此警报框不会出现

原因是什么?
请帮忙

因为在HTTP规范中,POST用于非幂等请求,因为它们修改服务器上的状态(例如,通过向类别中添加新产品),如果请求被重新写入,将再次修改该状态(例如,它将在类别中创建新产品)

另一方面,GET用于幂等请求。例如,google搜索是幂等的。搜索两次相同的内容不会修改服务器上的任何内容,并且重新提交相同的请求不会产生任何不必要的影响

浏览器希望web应用程序遵守此约定,并因此在重新提交POST请求之前警告用户此不必要的副作用


通常的做法是遵循这种模式,让用户在发布后刷新,而不会出现这种恼人的弹出窗口,也不会产生不必要的副作用。

因为GET请求在URL中包含这些参数(例如URL以
?param1=foo¶m2=bar
结尾)。GET请求通常不涉及更改服务器状态的敏感数据或操作。从URL,你知道你在发送什么


在POST中,参数是“隐藏”的,作为HTTP请求的一部分在后台提交,通过查看URL无法看到它们。这些参数会导致服务器更改状态,如果相同的数据传输两次(例如,您会意外地从网络商店购买两次),则可能会导致问题。浏览器会让你知道,如果你没有意识到你会重新发送它。

这些答案对你有帮助吗?