HTTP协议

2019-05-07  本文已影响0人  王清水

一,HTTP简介

Hyper Text Transfer Protocal(超文本传输协议),用于client和server之前的超文本(就是不只是文本啦)传输,即客户端发送请求到服务器,服务器根据处理请求以及逻辑处理,返回响应给客户端。

请求的常用方法有GET、HEAD、POST,HTTP允许传输任意类型的数据对象,其类型由Centent-Type加以标记。

客户端和服务器的每一次连接只处理一个请求,以客户端收到应答为一次连接的结束。

HTTP使用统一资源标识符URI来传输数据并建立连接,我们通常说的统一资源定位符URL只是一种特殊的URI,其完整组成为: 协议+域名+端口+虚拟目录+文件名+锚+参数。URI用来唯一标识一个资源,URL不仅如此,还指明如何定位这个资源。

二,请求消息Request

请求消息包含:请求行,请求头,空行以及请求数据

HTTP请求消息结构示意图

请求行:用来说明请求类型,要访问的资源以及所使用的HTTP版本

请求头:用来说明服务器要使用的附加信息

空行:请求头部后面的空行是必须的

请求数据(请求体):可以添加任意的其他数据


使用Chrome浏览器百度任意一个get请求,我们可以得到他是GET请求,请求头中该资源支持gzip压缩的(前端性能优化的重点),域名信息,请求源Referer(爬虫相关),连接模式为Keep-Alive模式(持久连接)等信息

三,HTTP转态码

1__:指示信息--表示请求已接收,继续处理

2__:成功--表示请求已被成功接收、理解、接受

3__:重定向--要完成请求必须进行更进一步的操作

4__:客户端错误--请求有语法错误或请求无法实现

5__:服务器端错误--服务器未能实现合法的请求

常见的如:

 200 客户端请求成功                                  

304 服务端资源无变化,可使用缓存资源

 403 服务器禁止访问该资源      404 请求资源不存在    400 客户端请求语法错误 

 500 服务器发生未知错误                            

四,HTTP工作流程

1,客户端连接到服务器(建立TCP套接字连接)

2,通过TCP套接字,客户端向服务器发送请求报文

3,服务器接受请求并解析请求,定位到资源,将资源副本写到TCP套接字,发送响应,由客户端读取响应中的响应数据

4,连接模式为普通模式的话,服务器主动关闭TCP连接,客户端被动关闭;如果Connection模式为Keep-Alive则此连接会保持一段时间,该段时间内可以继续接受请求(注意:Keep-Alive并不代表一定会使用长连接)

5,客户端解析资源

五,GET和POST的区别

GET和POST本质上两者没有任何区别,他们都是HTTP协议中的请求方法,底层实现都是基于TCP/IP协议,所谓区别,只是浏览器厂家根据约定,做得限制而已

如果真要讲啥区别:

1,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的

2,GET请求的URL传参有长度限制,而POST请求没有长度限制

3,GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制

4,GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值

5,GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上

注意:POST请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form-urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。

GET请求的参数为毛只能是ASCII码
上一篇 下一篇

猜你喜欢

热点阅读