计算机中的协议和现实中的协议是一样的,一式双份或多份,双方多方都遵从共同的一个规范,这个规范就可以称为协议。
例如:ftp,http,stmp,pop,tcp/ip协议,离婚协议
http协议即按一定规则,向服务器要数据,或发送数据,而服务器按一定规则,回应数据
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
请求:
请求行:
请求方法
问:浏览器能发送HTTP协议,HTTP协议一定要浏览器发送吗?
答:不是,HTTP既然是一种协议,那么只要满足这种协议,什么工具都可以发
请求方法有哪些?
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就只发送一次。
状态码:是用来反应服务器响应情况的
最常见的如: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