post与get的区别

来源:互联网 发布:程序员 博客 平台 编辑:程序博客网 时间:2024/05/16 05:43

一直没有特意去弄明白post与get的请求,今天一个电话面试问到了这个问题,当时的回答是:仅是请求参数的放置在http报文位置不同,一个可以在浏览器里看见请求参数,一个看不见。但是感觉答的不是很好,请求报文的结构也不清楚,于是学习了一下,记录下来。

1.http报文

分请求报文和响应报文,他们结构大体都是三部分,我对比着说

   请求报文   响应报文

(请求行)(状态行)

(请求头) (响应头)

(数据行) (数据行)

他们之间的区别就是请求行与状态行,其他的部分答题相同


不同部分:

请求行的结构:

请求方法+url+传输协议版本号

状态行的结构:

请求协议版本号+状态码+状态描述


相同部分:

请求头,响应头:

都是一些键值对:

请求头通知服务器关于请求的信息,例如浏览器类型,客户端支持的接收内容的类型,请求的服务器主机名等;

响应头包括响应内容的类型等

数据行:

post请求的参数,响应的内容都放在数据行


2.了解了http报文,那么可以开始说明post与get的区别

1.最明显的便是发送请求是参数在报文中的位置不同了。

get请求的参数放在报文的请求行与url拼接,?号将url与参数隔开,非数字和英文的参数将会被加密,转换成16进制的格式显示出来,真个url将会被暴露在浏览器上

2.其次能够传输的数据大小会有区别

一般来说,get请求能够传输的数据会比post小一点,因为参数位置不一样的原因,get请求能够携带的数据多少有url的长度决定,由于浏览器支持的url长度一般都是有限度的,所以一般get携带的参数会比post少,一般需要传递大量的数据的时候,应该用post请求。

3.安全性

由于get参数暴露在浏览器,所以post请求传递参数的时候安全性会高一点

0 0
原创粉丝点击