http
公网IP地址是唯一确认一台主机的,而我们所谓的网络“资源”,都一定是存在网络中的一台Linux机器上。Linux或者传统的操作系统,保存资源的方式都是以文件的方式保存的。单Linux系统,标识一个唯一资源的方式是通过路径。所以IP+Linux路径,就可以唯一的确认一个网络资源。
URL(统一资源定位符)
http请求报文图例:
http响应报文图例
conten-length代表正文部分有多少字节,决定我们读取多少个len字节的正文。先读取到换行处,可以保证我们读取全部的请求报文,如果正文中有Content-length,说明后面还有多少字节的正文,我们继续读这么多字节的正文,这样可以读取所有的报文+有效载荷并且不会越界读取到下一个数据。
content-type代表正文部分的类型。
‘/’代表的是访问网站的首页也就是index.html。
http1.0和http1.1,最主要区别是http1.1支持长连接及短链接,http1.0只支持短链接。
**Get方法:**获取,最常用的方法,一般的网页获取的默认方法都是Get方法,如果Get要提交参数,要通过URL来进行参数拼接交给server端。
**POST方法:**推送,提交参数比较常用的方法,提交参数一般在正文部分提交。
不同点:
1.两者提交的位置不同,post方法比较私密(私密不等于安全)不会回显在浏览器的输入框中,GET则会回显到URL中。
2.GET通过URL传参,而URL大小有限,POST方法,由正文部分传参,没有大小限制。
常见http的head
- Content-Type: 数据类型(text/html等)
- Content-Length: Body的长度
- Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
- User-Agent: 声明用户的操作系统和浏览器版本信息;
- referer: 当前页面是从哪个页面跳转过来的;
- location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
- Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;
http本身是一种无状态协议,不记录上下文的状态,这样带来的好处是实现简单。
**cookie:**会话管理
站在浏览器角度,cookie是一个文件,该文件保存用户的私密信息。
站在http角度,一旦该网站对应有cookie,在发起任何请求的时候都会自动在request中携带该cookie信息。这也就是当我们在网页中输入了自己的账户和密码,对端服务器就会将cookie发送到浏览器中,在后面每一次对服务器的request请求都会带上该cookie,这也就是为什么我们登陆以后就可以一直访问网站。
seession:会话管理
由于cookie会将私密信息放入到用户的浏览器中,而一旦不法分子获得该cookie就可以获取到用户的私密信息,所以出现了seession。seession的核心思路是将用户的私密信息都放到服务器中。举例说明,当用户输入自己的账户和密码后,server就会形成一个seession文件来保护用户的信息,而给用户返回一个编码作为每次访问seession文件的权限,这个编码是独一无二的,在一定程度上可以减少用户被盗用信息。但是这并没有完全解决被盗用的问题,因为如果该编码也被盗用到,不法分子可以以用户的身份在服务器中访问到seession文件。暂时没有可以很好解决被盗用的问题,但是也出现了一些衍生解决问题的方法,比如说检测IP异地登陆时要求用手机验证码,如果用户使用了一些敏感操作会发出警告等。