关于HTTP
HTTP(超文本传输协议):
- 属于应用层协议。
- 基于c/s模式。
- 通过请求响应达成通行。
- 无连接,不保持状态,一次连接请求响应结束既断开。
- 职责是生成针对目标web服务器的http请求报文。
关于URL
URL(统一资源定位符)是URI(统一资源标识符)的子集。
URI格式:
协议方案名://user:password@host[:port]/带层次的文件路径?查询字符串#片段标识符
关于Http报文
用于http协议交互的信息称作HTTP报文。
从请求端发送到响应端(服务器端)的叫做请求报文。
从响应端发送到请求端的叫响应报文。
HTTP报文本身是由多行数据构成的字符串文本。
HTTP报文可大致分为报文首部和报文主体两部分。两者由空行隔开。通常不一定要有报文主体。
报文首部:服务器端或客户端处理的请求或响应的内容及属性。
报文主体:应被发送的数据。
请求报文的结构
- 请求行:用于请求的方法,请求URI和Http的版本。格式:请求方法 请求URI Http版本号
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
请求方法:
- GET:获取资源。该方法用于请求访问已被URI识别的资源。指定的资源被服务器解析后返回响应的内容。
- POST:在请求URI所标识的资源后附加新的数据。常用于提交表单。
- HEAD:请求获取由请求URI所标识的资源的响应消息报头。
- PUT:向服务器存储资源,并保存到请求URI指定的位置。
- DELETE:删除请求URI指定的资源。
- TRACE:请求服务器回送收到的请求信息,主要用于测试和诊断(不常用)。
- CONNECT:该方法要求在代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SLL和TLS协议把通信信息加密后传输。
- OPTIONS:查询请求URI指定资源支持的方法。
响应报文的结构
- 状态行:包含响应结果的状态码,原因短语和HTTP版本。
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
状态码:
类别 | 原因短语 | |
---|---|---|
1xx | 信息性状态码 | 接收的请求正在处理 |
2xx | 成功状态码 | 请求正常处理完毕 |
3xx | 重定向状态码 | 需要进行附加操作以完成请求 |
4xx | 客户端错误状态码 | 服务器无法处理请求 |
5xx | 服务器错误状态码 | 服务器处理请求出错 |
常见状态码:
- 200 ok:服务器正常处理请求。
- 204 no content:服务器正常处理请求没有资源返回。
- 206 partial content:表示客户端进行了范围请求,服务器成功执行了这部分的get请求。
- 301 Moved permanently:表示资源已经永久性重定向到了新的URI。
- 302 Found :临时新重定向,表示请求的资源已经被分配到了其他URI,希望用户本次能使用心得URI访问(302存在网址劫持的问题。比如我要做一个新的网址 但是我不想写内容,于是我用302做一个重定向,当别人访问我的网址的时候会跳转到别人的网址。但是由于搜索引擎算法的原因和我的网址比别人的网址更加简洁友好 导致搜索引擎不会去抓取别人的网址,而是继续显示我的网址,但网址的内容却是别人网址的。从而把别人的劳动成果窃取。)
- 303 See other:该状态码明确要求客户端应该采用get方法获取资源。
- 307 Temporary Redirect:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。
- 304 Not Modified:该状态码表示客户端发送附带请求时,服务器端允许请求访问资源。但因为发生请求为满足条件的情况后,直接返回304 状态码。
- 400 Bad Request:该状态码表示请求包含语法错误。
- 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
- 403 Forbidden:服务器收到请求,但是拒绝提供服务。
- 404 Not Found:请求资源不存在,eg:输入了错误的URL。
- 500 Internal Server Error:服务器发生不可预期的错误。
- 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。