【HTTP协议】


HTTP

HTTP(超文本传输协议)是一种应用非常广泛的应用层协议。
HTTP是基于传输层的TCP协议实现的。

如何才能看到HTTP的报文格式?
可以借助一些抓包工具来获取到具体的HTTP交互过程中请求和响应。

抓包工具的使用

(1)官网:https://www.telerik.com/fiddler
(2)选择:
在这里插入图片描述

HTTP请求

  • 请求分为4个部分:

(1)请求行包含三个部分:① HTTP的方法。方法大概描述了请求想干什么。②URL。描述了要访问的网络上的资源具体在哪。③版本号。HTTP/1.1表示当前使用的HTTP的版本号是1.1.
(2)请求头(header),包含了很多行,每一行都是一个键值对。
(3)空行。相当于请求头的结束标记。
(4)请求正文。

  • 方法
    最常用的方法:get和post
    get常用于获取服务器上的某个资源。
    post多用于提交用户输入的数据给服务器。
    (1) get请求的特点:
  • 首行的第一部分为get;
  • URL的query string可以为空,也可以不为空。
  • header部分有若干个键值对结构
  • body部分为空

(2)post请求的特点:

  • 首行的第一部分为post
  • URL的query string一般为空
  • header部分有若干个键值对结构
  • body部分一般为空。body内的数据格式通过header中的content-Type指定,body的长度由header中的content-Length指定

在这里插入图片描述

  • get和post的区别:
    (1)语义不同:get一般用于获取数据,post一般用于提交数据。
    (2)get的body一般为空,需要传递的数据通过query string传递,post的query string一般为空,需要传递的数据通过body传递。
    (3)get请求一般是幂等的,post请求一般不幂等(如果多次请求得到的结果一样,就视为请求是幂等的)。
    (4)get可以被缓存,post不能被缓存。

认识请求“报头”

  • cookie
    cookie就是浏览器给页面提供的一种能够持久化存储数据的机制。
    cookie的最重要的应用场景就是存储会话id,进一步的让访问服务器的后续页面的时候,能够带上这个id从而让服务器知道当前的用户信息。

cookie具体的组织形式:
(1)先按照域名来组织,针对每个域名分别分配一个小房间
(2)一个小房间里面又会按照键值对的方式来组织数据

HTTP响应

响应分为4个部分:
(1)首行:包含了3个部分。①版本号。②200 状态码。描述了这个响应不同的状态。③ 状态码的描述
(2)响应头(header)键值对结构,每个键值对占一行。
(3)空行。表示响应头的结束标记。
(4)响应正文。服务器返回给客户端的具体数据。

状态码

在这里插入图片描述
200 :浏览器很顺利的就获取到想要的内容。
404 Not Found:要访问的资源不存在。
403 Forbidden:资源存在但没访问的权限。
500:服务器自己出问题,意味着出现bug。
302:重定向 。

通过form表单构造HTTP请求

form(表单)是HTML中的一个常用标签,可以用于给服务器发送get或post请求 。

通过ajax构造HTTP请求

ajax所使用的的等待方式:异步等待。首先构造出一个http请求发给服务器,但是浏览器不确定服务器什么时候才有响应,于是就先不管了,浏览器里面就继续执行其他代码,等到服务器的响应回来了之后,再由浏览器通知对于的js代码,以回调函数的方式来处理响应。

  • 引入jquery
    (1)先在搜索引擎中搜索jquery cdn查询词
    (2)在结果中找一个合适的cdn的url
    (3)打开对应的url,加载出jquery本体
    (4)复制粘贴到本地文件
<script src="jquery.js">
        $.ajax({
            type:'get',
            url:'http://www.sogou.com/index.html',
            success:function(body){
                console.log("获取到响应数据!"+body);
            },
            error:function(){
                console.log('获取响应失败')
            }
        });
    </script>

在这里插入图片描述

Java构造一个http请求,主要就是基于TCP socket,按照http请求的报文格式,构造出一个匹配的字符串,在写入socket即可。

HTTPS

HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层.
HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况.
HTTPS 就是在 HTTP 的基础上进行了加密, 进一步的来保证用户的信息安全.

加密

加密就是把明文(要传输的信息)进行一系列变换生成密文。
解密就是把密文再进行一系列变换,生成明文。

  • HTTPS中引入的加密层称为SSL
  • 在SSL里面,涉及到的加密操作其实主要是两种方式:
    (1)对称加密。
    使用同一个密钥,既可以进行加密,也可以解密。

使用对称加密最大的问题在于说密钥得能够传递过去,如果明文传递是不行的,必须针对这个密钥在进行加密。

(2)非对称加密
非对称加密有两个密钥,分别叫公钥和私钥。
公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多。

(3)引入证书
在客户端和服务器刚一建立连接的时候,服务器给客户端返回一个证书。这个证书包含了公钥,也包含了网站的身份信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值