如何做自己的淘宝优惠券网站,设计制作费用计入什么会计科目,seo公司 杭州,想学动漫设计报什么专业1.1 请求和响应的格式
http协议和前边学过的传输层、网络层协议不同#xff0c;它是“一问一答”形式的#xff0c;所以要分为请求和响应两部分看待#xff0c;同时#xff0c;请求和响应的格式是不同的#xff0c;我们来具体介绍一下。
1.1.1 请求
在介绍请求之前它是“一问一答”形式的所以要分为请求和响应两部分看待同时请求和响应的格式是不同的我们来具体介绍一下。
1.1.1 请求
在介绍请求之前先来看一个具体的http使用案例 首先我们能看到的是http的内容是能够直接看懂的说明http是文本形式的不同于TCP、IP协议的二进制形式http的响应也是文本形式的但是我们查看时会发现是二进制形式这是因为响应在网络传输过程中会被压缩为二进制形式用来提高传输效率节省网络带宽。
请求分为以下几个部分
1、首行 这是http的第一行 分为三个部分用空格分隔
1GEThttp请求的方法method还有其它很多方法之后介绍
2URL唯一资源定位符描述了一个资源在网络中的位置
3版本号
2、请求头
请求头是很多键值对结构的数据每个键值对都是独占一行的要注意的是这里的键值对都是属于“标准规定的”即key和value都有固定的东西不可以程序员自己随便定义
3、空行
请求头的结束标记
4、正文请求体
有的http请求有有的没有后边详细介绍 1.1.2 响应 响应也是由四部分构成的
1、首行
1版本号HTTP/1.1
2) 状态码200
3状态码描述OK
2、响应头
响应头的格式和请求头是一样的也是键值对形式的但是具体的键和值不同后边会详细介绍
3、空行
响应头的结束标记
4、正文响应体
正文里的内容可能会很长有很多中形式HTML、CSS、JS、JSON、图片、视频..... 1.2 请求详细版
1.2.1 首行
请求方法 请求方法有上图中那么多种在这里我们只介绍最常用的GET和POST方法。
GET通常会把要传给服务器的数据放在URL的查询字符串中query string
POST通常会把要传给服务器的数据放在请求体中
这是GET和POST最本质的区别接下来介绍的一些特点均是基于这个区别的
注意GET请求和POST请求的区别是面试中的常考题但是由于技术的发展这些区别已经属于“历史遗留”问题了现在二者已经可以相互替换差别不大了所以了解即可
1、GET请求能传递的数据量有上限POST请求能传递的数据量没有上限
这种说法产生的原因是因为GET请求携带数据是放在query string中的而POST请求携带数据是放在请求体中的有一定的道理但是随着技术的进步现在的URL甚至可以携带图片资源所以这种说法应该会逐渐消失
2、GET请求传递数据不安全POST请求传递数据安全
举个例子在我们登录账号时如果使用GET请求账号和密码都会直接携带在URL中可以直接被看到而POST的账号和密码是隐藏在请求体中的不会被看到所以有更安全这个说法但是这个说法是不正确的上述的例子骗一个不懂计算机的小白或许还可以的但是对于一个黑客无论你的数据放在哪里他都能拿到所以想要数据安全要采取别的方法比如加密措施....
3、GET只能给服务器传文本数据POST可以给服务器传文本和二进制数据
这种说法也是不正确的
1GET请求也可以把数据放在请求体中只是通常不这样做
2GET也可以把二进制数据进行base64转码放在URL的query string中
4、GET请求是幂等的POST请求是不幂等的
幂等输入相同的数据输出是稳定的
比如奶牛产奶吃草之后奶牛一定产的是牛奶而不是别的东西这就是幂等的。
但是这种说法也不完全正确当我们使用GET请求访问一些广告页面时输入的请求相同但是输入的广告常常是不相同的所以这种说法也不完全正常
5、GET请求可以被浏览器缓存POST不可以被缓存
这个说法其实是基于第4个说法的如果每次输出稳定当然可以将数据缓存在浏览器中反正每次请求的输出都一样那直接在缓存中拿来使用不就好了
6、GET请求可以被浏览器收藏夹收藏POST不可以被收藏
这种说法的主要原因是认为收藏的时候可能会丢失请求的body URL 这是请求首行中URL的具体划分
协议方案名指出用到的协议是什么登录信息认证现在大多数请求已经没有了服务器地址服务器在网络中的位置也就是IP 地址此处用域名表示服务器端口号指明了具体要访问服务器中的哪个程序带层次的文件路径指明了具体要访问程序中的哪个资源查询字符串是一种键值对结构的数据以?开头这里的键值对都是程序猿自定义的相当于对这次请求的一些补充说明片段标识符有的网页内容比较长就需要划分为多个“片段”通过片段标识符能够实现页面内部的跳转技术文档中十分常见
对于URL给大家举个具体的例子
http://小淘气食堂:80/包子/猪肉大葱包子?葱少放辣椒微辣
对于上述这个例子小淘气食堂就是域名也就是要访问的网络资源的地址80是这个食堂中具体的窗口也就是我们要访问的具体的程序包子/猪肉大葱包子是在这个窗口中具体想要访问的资源?葱少放辣椒微辣就是我们说的查询字符串是对于这次请求的一个补充说明。
1.2.2 请求头
请求头里的键值对很多这里介绍几个比较重要的
1、HOST这是请求的域名在URL中也有即服务器的网络地址
2、Content-Lengthbody中数据的长度
3、Content-typebody中数据的类型
请求中有body才会有以上两种请求头键值对GET请求通常没有body所以通常没有POST请求有body所以请求头中会包含以上两种键值对
Content-type是有很多类型的例如
jsonform表单的格式form-data的格式
后续给服务器提交请求时不同的Content-type服务器处理数据的逻辑是不同的服务器返回数据给浏览器也需要设置合适的Content-type浏览器也会根据不同的Content-type做出不同的处理。
4、User-Agent 5、RefererReferer描述了当前页面是从哪个页面跳转过来的 6、CookieCookie可以认为是浏览器在本地存储数据的一种机制即直接把数据保存在浏览器中 浏览器的数据都来自服务器之后的操作也会将数据提交给服务器但是在程序运行过程中也有一些数据需要存储在浏览器本地例如上次登陆时间、用户的身份信息...这些数据是需要在下次传给服务器数据时一并发送过去的这些临时性的数据就存储在浏览器比较合适。以下是一些Cookie在日常应用中的例子