我们经常使用 form 来提交数据,form 表单的属性 method 有两个值:get 和 post。
一般情况下,我们知道的 get 方式, GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为 %20,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
post 方式,POST把提交的数据则放置在是HTTP包的包体中。
(As a rule of thumb, you should only use GET forms if, when the form is submitted, nothing on the server changes - such as when you're requesting a list of search results. Because the search terms are in the URL, the user can bookmark the search results page and get back to it without having to type in the search term again. But if, after submitting the form, a file is deleted, or a database is updated, or a record is inserted, you should use POST. The primary reason for this is that if a user bookmarks the page (or presses back in their browser) it won't trigger the form submission again and potentially create a duplicate record.)
一个重要的原则是,当表单提交,服务器端的资源没有什么改变,例如:请求查询结果列表。因为查询关键词是在 URL 中,用户可以收藏查询结果页面。再次需要用到时,只需再次打开链接,而不需要重新输入搜索关键词,再次搜索。
如果在表单提交之后,有文件被删除了,或数据库有更新,或者插入一条记录,那么你就需要使用 POST。主要的原因是,即使用户收藏了提交表单链接,或者点击浏览器『后退』按钮,也不会触发表单的重复提交,与可能创建了重复记录。
GET - select, POST - update,PUT - insert, DELETE - delete.
Reference:
- https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
- PHP&MySQL .Novince.To.Ninja.6th.Edition.2017