目录
预备知识
认识url
urlencode和urldecode
http和https的区别
http request 和 http response
http request格式:
http reponse格式:
HTTP的请求方法
HTTP的状态码
HTTP常见Header
问题
解决方案
预备知识
认识url
平时我们俗称的“网址”就是url,url也就是统一资源定位符
‘ ?’后面可以带参,我们可以带上的动态数据,后面是KV键值对
urlencode和urldecode
少量的情况,提交或者获取的数据本身可能包含url中特殊字符冲突的字符,要求BS双发进行编码(encode)和解码(decode),像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。
比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。
转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY。
http和https的区别
https:端口号443 https://www.baidu.com
http:端口号80 http://183.2.172.185
一、传输信息安全性不同
- http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。
- https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。
二、连接方式不同
- http协议:http的连接很简单,是无状态的。
- https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
三、端口不同
- http协议:使用的端口是80。
- https协议:使用的端口是443
http request 和 http response
http request格式:
格式为:请求行,请求报头,空行,请求正文;
请求行包含请求方法(GET、POST),然后以空格符为分隔符跟上请求的资源地址url与HTTP版本。
请求报头每一行都是请求属性,以Key-Value的结构,以/r/n为换行符,其中包含一个请求正文的长度,以此来正确读取请求正文内容。
请求报头和请求正文之间有一行空行,以正确分隔请求报头和请求正文。
请求正文是我们要上传的内容,可以没有。具体如下图所示:
http reponse格式:
格式为:状态行,响应报文,空行,响应正文,具体如下:
- fiddler抓包 代理
- Postman
HTTP的请求方法
最常用的是GET,POST;
如果我们要提交参数给我们的服务器,使用GET方法,提交的参数是通过url提交的
HTTP的状态码
最常见的状态码, 比如 200(OK), 404(Not Found), 403(Forbidden), 302(Redirect, 重定向), 504(Bad Gateway)
HTTP常见Header
- Content-Type: 数据类型(text/html等)
- Content-Length: Body的长度
- Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
- User-Agent: 声明用户的操作系统和浏览器版本信息;
- referer: 当前页面是从哪个页面跳转过来的;
- location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
- Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能
Cookie一般会带文件中的内容,用户名和密码,cookie文件有文件级和内存级
cookie文件
cookie是什么
cookie是网络服务器通过将其存储在网络浏览器上的小量信息来记住访客的特定信息。这些信息包括上次访问的位置、花费的时间或用户首选项(如样式表)。浏览器会将Cookie存储在RAM中,当访客关闭浏览器时,也会将这些信息存储在计算机的硬盘上。如下:
cookie文件分为内存级和文件级,它的存在提高了用户体验,但是他也存在一些安全问题。
问题
cookie文件的存在也造成了一些问题,如下:
- cookie被盗取的问题
- 个人私有信息泄露
解决方案
session技术(解决个人私有信息泄露的问题)
session+cookie 是基于http协议会话保持原理
一般客户端是不止一个的,我们需要将成千甚至上万个session文件管理起来,在实际应用中 ,是将这些session信息托管给Redis集群管理。
上述方法中,即使cookie文件被盗取,个人私有信息也不会被泄露,因为引入session技术的本质就是原本让浏览器本身自己维护的用户信息放到服务器维护。
PS:至于cookie文件被盗取的问题目前是解决不了的,但是我们session id是由服务器端统一管理分配的,服务器端可以将异地登陆的用户,删除其原有session id,让其重新登录。也就是说虽然我们无法彻底解决黑客冒用用户身份进行登录,但是服务器端可以通过对session id各种取消,修改,暂停等操作来达到控制客户端的目的。