GET请求可以加入书签而POST也不能.有人可以解释一下吗?

gir*_*iri 20 http

我正在研究HTTP方法.我读到可以将GET请求加入书签并且不能将POST请求加入书签.有人可以用一个例子来解释这个吗?

谢谢

Rob*_*sor 28

可以为HTTP POST添加书签,但由于书签仅包含URL,因此所有表单参数都将丢失.这通常意味着Web服务器不知道如何处理请求,因为它需要一些表单参数.

如果您通过GET请求提交表单,则所有表单参数都会进入URL(在?之后),因此书签将包含Web服务器第二次重建页面所需的所有信息(cookie除外)或许,但网络服务器更有可能优雅地处理它)

  • 轻微狡辩:由于"书签"具有浏览器的强烈含义,并且浏览器不会将关联的HTTP方法与书签存储在一起,因此无法真正为POST添加书签.POST的URL可以作为重复POST存储和执行,但在我看来,这与"书签"不同. (4认同)

小智 10

POST无法加入书签.尝试为POST添加书签只会导致对URL进行GET操作.这有一个非常好的理由,GET请求应该是幂等的 - 也就是说,多次发出相同的GET请求应该会产生相同的响应.另一方面,POST请求不是.允许将POST加入书签可能会导致您支付两次费用,再次将资金转出您的银行帐户等.


Bal*_*usC 6

并不是那个或那个不能被加书签.更多的是点击书签将始终触发GET请求!单击普通的vanilla链接,书签,浏览器导航按钮,进入浏览器地址栏等等都会触发GET请求.他们永远不会发出POST请求.一个POST请求是正常时,你只解雇提交一个HTML <form>被设定method="post".您可以完美地编写软件来为POST请求添加书签,但由于敏感原因,它不会这样做.

然而,这里的特殊之处在于GET请求是幂等的.换句话说,每次调用它时都保证给出相同的结果.这很简单,因为请求URL中只提供了所有请求参数.您可以使用它在显示之前预处理数据.在Java Servlet世界中,您通常使用doGet()此方法,根据请求参数预加载一些内容,将请求转发到JSP文件进行显示.

一个POST请求,但是是不是幂等.换句话说,当您调用它时,不保证每次都给出相同的结果.所有请求参数都包含在请求正文中.它对最终用户不可见,也在请求URL中不可见.换句话说,你不能将它加入书签.您可以在表单提交后使用ro postprocess数据.在Java Servlet世界中,您通常使用doPost()此方法来收集请求参数并将其存储在某个数据库中并在末尾转发将请求重定向到JSP文件以进行结果/确认/显示.