http知识梳理1 1.什么是协议 计算机中的协议和现实中的协议是一样的,一式双份或多份, 双方多方都遵从共同的一个规范 ,这个规范就可以称为协议。 例如:ftp,http,stmp,pop,tcp/
http知识梳理1
1.什么是协议
计算机中的协议和现实中的协议是一样的,一式双份或多份,双方多方都遵从共同的一个规范,这个规范就可以称为协议。
例如:ftp,http,stmp,pop,tcp/ip协议,离婚协议
2.http协议
2.1什么是http协议
http协议即按一定规则,向服务器要数据,或发送数据,而服务器按一定规则,回应数据
2.2请求和响应信息`
response headers: HTTP/1.1 200 OK Date: Sat, 31 Aug 2019 04:00:37 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Server: openresty Vary: Accept-Encoding Content-Encoding: gzip Strict-Transport-Security: max-age=86400
request headers: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 Connection: keep-alive Cookie: peoplePercentage=3; Host: blog.csdn.net Referer: https://blog.csdn.net/weixin_43042787/article/details/86026308 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
2.3请求信息和响应信息的格式
请求:
- 请求行:方法,路径,请求版本
- 请求头信息
- 空行
- 请求主体信息(可以没有)
请求行:
- 请求方法
- 请求路径
- 所用协议
请求方法
- GET
- POST
- PUT
- DELETE
- TRACE
- OPTIONS
问:浏览器能发送HTTP协议,HTTP协议一定要浏览器发送吗?
答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发
2.4请求方法
请求方法有哪些?
GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS
注意:这些请求方法虽然HTTP协议里规定的,但WEB服务器未必支持
HEAD和GET基本一致,只是返回内容 比如我们只是确认一个内容(比如照片)还存不存在,**不需要返回照片的内容**,这时候用HEAD比较合适
TRACE:是你用了代理上网,比如代理访问news.163.con,你想看看代理有没有修改你的http请求,可以用TRACE来测试一下,news.163.con的服务器就会把最后收到的请求返回给你
OPTIONS:是返回服务器可用的请求方法
1、PUT和POST PUT和POS都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。 PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源) Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)
get和post 1、GET参数通过URL传递,POST放在Request body中。 2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。 3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。 4、Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。 5、 一般我们在浏览器输入一个网址访问网站都是GET请求 6、HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。 7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200?ok(返回数据)。 8、在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
2.5状态码和状态文字
状态码:是用来反应服务器响应情况的
最常见的如:200 OK,404 NOT FOUNT
状态文字:是用来描述状态码的,便于人观察
200-服务器成功返回网页 301/302-永久/临时重定向 304-未修改(取的缓存) 404-请求的网页不存在 503-服务器暂时不可用 500-服务器内部错误