【网络】HTTP协议(2)
一. HTTP协议
1.认识“方法”
GET方法
GET请求的特点:URL的query string通常不为空;body部分为空。
POST方法
POST ⽅法也是⼀种常⻅的⽅法. 多⽤于提交⽤⼾输⼊的数据给服务器(例如登陆⻚⾯).
POST请求的特点: URL的query string一般为空;body部分一般不为空,body 内的数据格式通过 header 中的 Content-Type
指定. body 的⻓度由 header 中的 Content-Length
指定.
GET与POST的区别
- GET 的 body ⼀般为空, 需要传递的数据通过 query string 传递, POST 的 query string ⼀般为空, 需要传递的数据通过 body 传递;
- GET 请求⼀般是幂等的, POST 请求无要求.(如果多次请求得到的结果⼀样, 就视为请求是幂等的).
- GET 可以被缓存, POST 不能被缓存. (这⼀点也是承接幂等性).
- 语义不同: GET ⼀般⽤于获取数据, POST ⼀般⽤于提交数据.
2.常见状态码
状态码表⽰访问⼀个⻚⾯的结果. (是访问成功, 还是失败, 还是其他的⼀些情况…).
- 200 OK :访问成功;
- 404 NOT FOUND :没有找到资源;
- 403 Forbidden:访问被拒绝,没有权限;
- 405 Method Not Allowed :所使用的方法不被支持;
- 500 Internal Server Error :服务器挂了;
- 504 Gateway Timeout:访问服务器超时,可能是服务器挂了,也有可能网络中断;
- 302 Move temporarily :临时重定向,响应报⽂的 header 部分会包含⼀个 Location 字段, 表⽰要跳转到哪个⻚⾯.
- 301 Moved Permanently:永久重定向. 当浏览器收到这种响应时, 后续的请求都会被⾃动改成新的地址.
状态码小结
3.认识“Header”
比如这份请求头,
Host
:表⽰服务器主机的地址和端⼝. (此处DNS域名解析)Content-Length
:表⽰ body 中的数据⻓度.Content-Type
:表⽰请求的 body 中的数据格式.
常见选项:application/json
(数据为 json 格式)、application/x-www-form-urlencoded
(可以认为是将query string放到了body中)、multipart/form-data
(通常用于提交图片/文件).User-Agent
(简称 UA) :表示浏览器/操作系统的属性.Referer
:表⽰这个⻚⾯是从哪个⻚⾯跳转过来的.Cookie
: 往往可以通过这个字段实现 “⾝份标识” 的功能.
关于Cookie的几个结论:
- Cookie从哪里来:服务器返回给浏览器的,通常是首次访问/登陆成功之后;
- Cookie到哪里去:Cookie会存储在本地主机的硬盘上,后续每次访问服务器都带上Cookie;不同的客户端,保存的Cookie是不同的,即使是同一个主机,使用不同的浏览器,Cookie大概率也不同。
- Cookie中存什么:键值对格式的数据(程序员自定义);
- Cookie在浏览器这边如何组织:在硬盘本地保存,是按照不同的域名为维度分别存储;有一组用来访问百度,一组用来访问搜狗…
- Cookie的用途是什么:用来在客户端保存数据,最重要的数据就是用户的身份标识。
4.构造HTTP请求(使用Postman)
选择方法,输入URL,点击SEND,就可以构造出相应的请求。
还可以选择构造相应编程语言的代码:
- Java常用的是OkHttpClient.