HTTP基础

2019-03-06

HTTP协议,是完全的 CS架构

--资源
---媒体类型
HTTP给每个资源请求都打上MIME(Multipurpose Internet Mail Extension) type的数据标签,用来标记多媒体内容。、
Web服务器会给所有的HTTP对象附上一个MIME类型,当浏览器从服务器取回对象时,会去查看相关的MIME类型。
MIME定义在 header里 Content-Type: text/html;charset=utf-8  

URL:uniform resource identifer


HTTP方法

get
put//如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的,
post//多次使用产生副作用,后一个请求会把前一个请求覆盖掉
delete
head//head方法和get方法类似,但是

状态码


200~299,成功状态码
200:ok
201:created
202:accepted
203:
204:no content,没有主体部分
205:reset content
206:partial content
300~399,重定向状态码
300:multiple choices
301:moved permanently
302:found
303:see other
304:not modified
305:use proxy
400~499,客户端错误状态码
400:bad request
401:unauthorized
403:forbidden
404:not found
406:not accepted
407:proxy authentication required
408:request timeout
409:conflict
410:gone
411:length required
412:Precondition Failed
413:request entity too large
414:request uri too long
415:unsupported media type
417:expection failed
500~599,服务器错误状态码
500:internal Server error
501:not implemented
502:bad gateway
503:service unavailable
504:gateway timeout
505:http version not supported

报文结构

请求报文结构

方法 URL HTTP/1.1
首部字段名: 值 CRLF......
首部字段名: 值 CRLFCRLF
实体主体(一般情况下不)

响应报文结构

HTTP/1.1 状态码 短语 CRLF
首部字段名: 值 CRLF
首部字段名: 值 CRLFCRLF
实体主体

http报文都是简单的纯文本,不是!!二进制代码!!
C --> S request mesage
S --> C response message
HTTP报文由三部分组成
一 起始行
一行

二 首部字段
多行
每个首部字段都有一个名和值,
 key:value
首部以一个 空行结束

三 主体
空行之后紧跟主体,起始行和首部字段都是文本且结构化的,而主体 可以 包含任意的二进制数据。
--------举个例子-----------

GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-NZ;q=0.8,en;q=0.7
Cookie: BIDUPSID=54061C75B0339C84E7CFDC081FDBB8D9; PSTM=1573125542; BAIDUID=54061C75B0339C8434EB16A9CAF710EA:FG=1; BD_UPN=123353