HTTP学习笔记
ip:定位网络上的某台主机
port:定位某台主机上的进程
网络请求/响应:基于网络数据传输
协议:网络数据传输,双方约定的数据格式
请求体和响应体
Request:
- 请求行:Method一般分为get和post方法,URL即请求的资源地址,Version版本号相关
- 请求报头:包含一些键值对信息
- 空行
- 请求正文
Response:
- 状态行:Version版本号相关小,状态码用来表示请求成功或者失败,用一个数字代表哪种情况造成的失败
- 响应报头:包含一些键值对信息
- 空行
- 响应正文:包含处理请求后返回的一些结果
get和post的区别
Get | Post |
---|---|
后退或刷新无影响 | 后退或刷新时数据会被重新提交 |
能被缓存 | 不能被缓存 |
参数会保留在浏览器历史中 | 参数不会保留在浏览器历史 |
可以被收藏为书签 | 不可以被收藏为书签 |
编码类型 application/x-www-form-urlencoded | 编码类型 pplication/x-www-form-urlencoded或multipart/form-data。为二进制数据使用多重编码 |
向url添加的数据长度有限制;url最大2048个字符 | url长度没有限制 |
只允许ASCII码 | 无限制,也允许二进制类型 |
与post相比不安全,因为发送的数据都会显示在url中 | 比get更安全,因为参数数据不会被保存在浏览器历史或者web服务器日志里 |
数据在url中对所有人可见 | 数据不会显示在url中 |
响应状态码
2xx:表示成功,操作被成功接收并处理
- 200 ok 请求成功,一般用于get或post请求
3xx:表示重定向,需要进一步的操作来完成请求
- 301 Moved Permanently 请求的资源被永久移动到新的uri,返回信息会包含新的uri,浏览器会自动定向到新的uri。今后任何新的请求都会使用新的uri来代替
- 302 Found 临时移动
- 304 Not Modified 未修改。请求的资源为被修改,返回此状态码时,不会返回任何资源。客户端会通过缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在修改日期之后的资源
4xx:表示客户端错误,请求包含语法错误或者无法完成请求
- 400 Bad Request 客户端请求的语法错误,服务器无法理解
- 401 Unauthorized 请求要求用户的身份认证
- 403 Forbidden 服务器理解客户端的请求,但是拒绝执行请求
- 404 Not Found 服务器无法根据客户的请求找到资源
- 405 Method Not Allowed 客户端请求中的方法被禁止
5xx:表示服务器错误,服务器在处理请求的过程中发生了错误
- 500 Internal Server Error 服务器内部错误,无法完成该请求
- 502 Bad Gateway 作为网关或者代理工作的服务器尝试请求时,从远程服务器接收到了一个无效的响应
http常见请求头
HTTP常见Header
- Content-Type: 数据类型(text/html等)
- Content-Length: Body的长度
- Host: 客户端告知服务器,所请求的资源是在哪个主机的哪个端口上
- User-Agent: 声明用户的操作系统和浏览器版本信息
- referer: 当前页面是从哪个页跳转过来的
- location: 搭配3xx状态码使用,告诉客户端接下来要去访问哪里
- Cookie: 用于在客户端存储少量信息,通常用于实现会话(Session)的功能
http常用Content-Type
- text/html : HTML格式
- text/plain: 纯文本格式
- text/xml: XML格式
- application/json: JSON数据格式
- application/octet-stream: 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded:form表单被编码为key/value的格式发送到服务器(表单默认的提交数据的方式)
文件下载)
- application/x-www-form-urlencoded:form表单被编码为key/value的格式发送到服务器(表单默认的提交数据的方式)