get请求
get请求通常在URL的后面跟随一个问号(?),然后是请求参数的名称和请求参数的值,中间用(=)表示成对的关系,若有多个请求参数,则以&字符连接。使用get方法连接时,请求参数会出现在浏览器的地址栏。
如http://www.xhcoding.cn?id=1&name=2
get请求的参数长度有限(长度依浏览器而有所不同),对于大量数据不适合用get请求。
post请求
post请求将请求参数移到最后的信息体(Message body),信息长度不受限制。
get与post请求的区别
从功能方面区分:
- 过长的请求参数或像文件上传这样的大量数据,应该使用post请求。
- 敏感或保密的信息就不应该使用get请求发送。
- post请求的参数不会出现在地址栏,所以无法添加到浏览器书签中,如果有些页面是通过不同的请求显示不同的内容,如本博客的各篇文章,而希望用户设置书签,以便以后直接浏览,则此时应该使用get。
- 有些浏览器会根据地址栏来缓存(Cache)数据,如果地址栏是相同的url,则直接从浏览器缓存中读取数据,而不真正请求到服务器。如果不希望服务器态改变,而浏览器仍从缓存中取得旧数据,则可以改用post。
还可以根据请求是否幂等(idempotent)操作来决定使用get或post。幂等操作就是请求的操作是否改变服务器的状态。
- get请求使用幂等操作,get请求纯粹是取得数据,而不改变服务器上的数据或状态。
- post请求用于非幂等(non-idempotent)操作,请求所发送的数据,可能会影响服务器上的数据或状态。如果请求改变服务器的状态,则应该使用post请求。
在form表单中,通过method属性来设置使用get或post的方式。不设置的话默认get。