动作POST / GET表单提交

时间:2015-12-08 09:13:52

标签: forms http post get

  

POST用于检索远程数据,<form>用于插入/更新远程数据

但是当我们使用action发送数据时,我们可以将<form>置于POST或GET中,在这两种情况下都会发送数据。在这种情况下,将不会检索或插入数据,只是将数据发送到服务器。 {{1}}中的这些GET和POST方法与上述描述中的GET和POST不同吗?

1 个答案:

答案 0 :(得分:1)

表单操作会告诉您的浏览器如何发送表单数据。

对于GEt,表单数据将作为查询字符串参数出现,如果POST为multipart/form-data正文。当然,这也会改变查询方法(GETPOST)。

这适用于协议的客户端部分。

现在,在服务器端GETPOST 应该的行为方式不同。

  • GET是无能为力的
  • POST不是

这意味着服务器(或服务器链,你可以在链中有一个反向代理缓存)必须期望POST正在对应用程序数据执行某些操作,因此应用程序或状态是在POST之后不一样(也许你现在有一个会话,或者你刚刚删除了某些东西,或者添加了一些东西)。结束这意味着您无法重复播放两次没有风险的POST 。事实上,任何人都不应该重播POST,这是一个动作。

如果您的表单是GET发布的,这是一个不同的故事。你只是要求一个网址(它包含你的网址的查询字符串中的表单数据),你得到一个结果,但重复相同的网址几次不应该是一个问题,我们也可以缓存结果并为请求相同URL的人重复使用此缓存结果(因此表单中具有相同的元素,现在位于URL中)。

因此,如果方法是GET,那么您的应用程序绝不能执行数据更改。不删除内容,不创建内容等等。

那你为什么要发一个表格作为GET?也许只是为了获得一个过滤的页面结果,其中每个人都应该使用相同的过滤器获得相同的页面结果。但肯定不会发布注册表单(或管理级别删除此用户操作)。