在w3schools中,是这样解答的:
- get对于浏览器回退是无害的,post会重新提交表单;
- get对于参数长度有限制,post没有;
- get在url中传参,post在request body中传参;
- post比get更安全;
- get只能进行url编码,post可以进行多种;
- 对于参数的现在,get只接受ACSII字符,而post没有限制;
- get请求会被浏览器主动cache,而post请求不会。
然而实际上,get和post并无本质上的区别,它们都是http为了规范化请求而设置的请求规范,要求get在url传参,要求post在request body中传参。但实际上两个传参方式它们都能使用;
并且,get请求只发一个TCP包,而post请求会发两个。get请求直接发起到服务器,直至处理完成并返回结果;而post请求首先发起一个TCP包,收到状态码100,继续请求;再发起一个TCP包,直至请求处理完成返回结果。