HTTP基础知识
1.HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
通信流程:
Http协议由Http请求和Http响应组成,当在浏览器中输入网址访问某个网站时, 你的浏览器会将你的请求封装成一个Http请求发送给服务器站点,服务器接收到请 求后会组织响应数据封装成一个Http响应返回给浏览器。即没有请求就没有响应。
2.HTTP请求与响应:
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,例:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding:
gzip, deflate, br
Accept-Language:
zh-CN,zh;q=0.9
Connection://保持连接
keep-alive
Cookie://重要!
LIVE_BUVID=AUTO7915222124019414; fts=1522212425; sid=cz06a1ca; UM_distinctid=16276eceacd173-01185465e6e735-4446062d-100200-16276eceacf2e2; buvid3=6E5942CA-6BDB-4B0A-833D-869896A0D803691infoc; rpdid=kmkkkpxoswdosiipmolqw; CURRENT_QUALITY=80; finger=edc6ecda; DedeUserID=141366726; DedeUserID__ckMd5=b003b2db3538137a; SESSDATA=086350d0%2C1527560093%2C3ca951e5; bili_jct=185f065f6213a32ecbcc6566cea28a93
Host:
www.bilibili.com
Upgrade-Insecure-Requests:
1
User-Agent:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
服务端响应:状态行、消息报头、空行和响应正文,例:
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT//可以用来识别网页内容是否更改,若无更改,则状态码为304,直接读取本地缓存 ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
常用的请求方法:GET POST
一般GET方法的请求字节长度会被浏览器或者服务器限制,而POST方法没有。
GET方法如果用于提交账户密码是不安全的,账户密码会被明文显示在URL中,另外网页访问默认是GET方式。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="#" method="post"> <input type="text" name="user"> <input type="text" name="password"> <input type="submit" value="提交"> </form> </body> </html>
常见的状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误