1.Http协议
http以及https在我们上网打开浏览器的时候搜索栏网址当中的url就是以这两种协议开头的。
Http协议是一个应用层的协议。Http和Https是两个不同的协议,Https相对于Http协议进行了加密操作。
2.Http的请求与响应的方式
如何看到我们的网页通过Http协议进行了请求与相应等操作。
方式1:
在网页当中通过F12,再点击网络(network)就可以看到:
方式2:
利用第三方软件来查看http请求
例如利用Fiddler来查看。可以通过官网进行下载。(最好在谷歌浏览器当中搜索更容易找到)直接进行安装不用进行环境的配置。
如果进行Fddler进行抓包操作,就相当于我们的网页对服务器的请求操作进行了中间转接,把请求发给了Fddler然后Faddler转发给服务器进行响应,响应给Fiddler,然后Fiddler再转给我们的页面。
Fiddler就相当于一个代理软件,代理软件之间是会有排斥的,所以使用Fiddler之前不要启动其他的软件。
3.包的信息:
1.Http请求:(四部分)
第一部分:第一行:方法(一般是get或者post)+url +http协议的版本
第二部分:请求头,多行(键值对结构)。
第三部分:空行(表示请求头结束)
第四部分:body(请求正文),可以为空
2.Http响应(四部分)
第一部分:首行: Http协议的版本+Http响应的状态码(200,404,503等)+状态码的说明(ok)
第二部分:响应头,行数不确定(键值对的形式存在)
第三部分:空行(表示响应头结束)
第四部分:body(相应正文)
4.Http请求与响应
1.Http请求:
(1)url:统一资源定位符
格式当中的每一个部分不是所有都必须填写才能进行url的访问。
1.用户名和密码一般都是没有的。
2.端口号一般也没有,一般是会是会使用默认的端口号
rul encode:对一些特殊字符进行转义。 转义的规则就是转成这些字符的ascil码值的十六进制+%。
(2)GET方法
用于获取服务器当中的某个资源。
get请求,一般是有查询字符串的,没有请求正文(body)。而post请求时没有查询字符串的,有请求正文
(3)POST方法
多用于提交用户输入的数据给服务器。
面试题:谈谈get和post的区别?
实际应用开发当中而这没有什么本质区别,get使用的场景post也能使用,反之也是。但是具体细节上还是有一些差别。
1.语义不同,get一般用于获取数据,post一般用于提交数据。(实际应用开发中get也用于提交数据,post也可以用于获取数据)
2.通常情况下,get的body一般为空,传递时需要查询字符串,而post则不需要查询字符串,并且body不为空。但是这并不是绝对的,get也可以有body,post也可以带查询字符串。
3.get请求一般是幂等的,post请求一般不是幂等的。(也不是强制,只是建议)
幂等:每一次相同的输入,得到的结果都是一样的。
4.get可以被缓存,而post不被缓存
(4)其他方法:不太常用
put,delete,options,head,trae,connect
(5)报头
Host:url 要请求的域名
Content-Length 表示body当中的长度
content-type 表示请求当中的body的数据格式
User-Agent 用来区分客户端
Referer 表示这个页面时从哪个页面跳转过来的(主要用来组数据的统计)
Cookie&Session(面试常考)
Cookie是客户端的
Session是服务端的
Http是没有记忆的。每个域名下都有自己的Cookie,互不干扰,以键值对的形式存储的。
Cookie:1.可以自己伪造2.服务器允许设置的
2.Http响应
表示Http相应的结果,有没有正确。
200:
是一个最常见的状态码,表示访问成功(表示Http得到了正确的响应,但是不一定指服务器返回正确的处理)
404:
访问界面不存在,无法访问
403:
访问被拒绝,可能是没有权限访问。
405:
请i取得访问方法不被允许,例如:用get方法去访问了服务器的post方法。
500:
服务器内部出现错误。内部代码出现错误。
504:
当服务器负(不仅仅指的是访问请求,也有可能是别的)载比较大的时候,服务器处理请求比较慢,从而出现超时现象。(超时时间是自己设置的。)
302:
临时重定向。
301:
永久重定向。
5.构造Http请求
1.get
(1)通过浏览器直接访问,用get请求
(2)通过form表单
(3)通过ajax
2.post
(1)form
(2)ajax
通过form表单:
Ajax:
三种等待方式:1.阻塞等待(一直等),异步等待(先去做别的事情,等到时间会有别的线程来通知,再去做),同步阻塞等待(做别的事情,过一会儿看一下等待的资源是否可用)
Ajax是异步等待。是Jquery提供给的方法。
1.引入 Jquery
(1)直接使用网络地址(不建议)
(2)使用本地的文件(从网上下载下来)
<script src="........" ></script>
2.写ajax代码
<script> //获取ajax对象 $.ajax({ //通过get方法来请求url路径的http响应 type:"get", url:"http//abc.com" //回调函数,当http相应成功则执行下面的function代码 success:fuction(body){ console.log("ajax success") //失败的时候执行的代码 error:function(){ console.log("ajax error") } } }); </script>
ajax不允许跨域访问,所以当访问url当中的请求的时候,网页执行的是error。
6.Https
加密:把明文经过一系列操作变成密文。
解密:通过一系列操作把密文变成明文。
加密方式:
1.对称加密:同一个密钥,通过这个密钥,可以从明文变成密文,也可以从密文变成明文。
2.非对称加密:
一个公钥,一个私钥。公钥相当于锁,私钥相当于钥匙。
加密过程: