Http协议

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.非对称加密:

一个公钥,一个私钥。公钥相当于锁,私钥相当于钥匙。

加密过程:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值