GET和POST请求的区别

发布时间 2023-09-26 16:56:00作者: Wanker

HTTP是超文本传输协议,用来定义客户端与服务器数据传输的规范。HTTP服务端默认端口为80,HTTPS 默认端口为443,客户端的端口是动态分配的。

GET 请求和 POST 请求都是 HTTP 请求八种(GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS)方法中的其中一种。

1、GET

GET 请求是一个幂等的请求,通过向特定的资源发出请求,从而获得服务器上的某一资源,对服务器资源不会产生影响的场景,例如:请求一个网页的资源(静态资源)。

2、POST

POST 请求不是一个幂等的请求,通过向指定资源提交数据进行处理请求,对服务器资源会产生影响的场景,例如:注册用户、提交表单或者上传文件。

3、区别

应用场景:GET不会对服务器资源产生影响,而POST会对服务器资源产生影响;

url可见性:GET请求的参数 url 可见,而 POST 请求的参数 url 不可见。 GET请求时通过url直接请求数据,数据信息可以在url中直接看到,比如浏览器访问;而POST请求是放在请求头中的,用户无法直接看到;

是否缓存:两者的应用场景不同,浏览器一般会对GET请求缓存,但很少对POST请求缓存;

传送数据量:GET传送的数据量较小,有限制,不能大于2KB;这主要是因为它受约于url长度的限制。POST传送的数据量较大,一般被默认为不受限制,但理论上,IIS4中最大量为80KB,IIS5中为100KB;

发送的报文格式:GET请求的报文中实体部分为空,而POST请求的报文实体部分一般为向服务器发送的数据;

安全性:GET请求因为数据参数是暴露在url中的,所以安全性比较低,如密码不能暴露的就不能用GET请求;POST请求中,请求信息是放在请求头的,安全性较高;

请求长度:浏览器由于对url长度的限制,所以会影响GET请求发送数据时的长度;

参数类型:POST的参数传递支持更多的数据类型,GET请求只能发送ASCII字符。