http知识梳理1

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请求信息和响应信息的格式

请求:

  1. 请求行:方法,路径,请求版本
  2. 请求头信息
  3. 空行
  4. 请求主体信息(可以没有)

请求行:

  1. 请求方法
  2. 请求路径
  3. 所用协议

请求方法

  1. GET
  2. POST
  3. PUT
  4. DELETE
  5. TRACE
  6. 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

状态文字:是用来描述状态码的,便于人观察

状态码 定义 说明
1xx 信息 接收请求,继续处理
2xx 成功 操作成功地收到,理解和接受
3xx 重定向 为了完成请求,必须采取进一步的措施
4xx 客户端错误 请求的语法有错误或不能完全被满足
5xx 服务端错误 服务器无法完成明显有效的请求
200-服务器成功返回网页
301/302-永久/临时重定向
304-未修改(取的缓存)
404-请求的网页不存在
503-服务器暂时不可用
500-服务器内部错误
原文地址:https://www.cnblogs.com/sm1128/p/11438731.html