JavaEE——Http请求和响应,https的加密

news2024/12/28 3:14:16

请求

报头

里面是一系列键值对,有的是标准定义的,有的是自定义的
典型的有以下几个

Host

代表服务器的主机地址和端口
也就是当我们访问浏览器时,可以知道从哪里获取数据
端口号如果省略就代表是默认值,http是80,https是443

URL中也有端口号和IP地址,而这两者并不一定一样
当目标服务器有代理时,请求的URL的主机地址就是代理的地址,而Host中的地址是服务器的地址

Content-Length

表示body中的数据的长度
由于我们Http早起是采用TCP传输的,因此具有粘包问题,所以需要给定报文长度

Content-Type

表示body中的数据格式
不同的数据类型格式采用的解析方式是不一样的,因此需要指定
常见有以下几种类型

  1. form表单提交的数据格式
application/x-www-form-urlencoded: form
  1. 表单提交的数据格式(提交文件时)
multipart/form-data: form 
  1. json数据
application/json

User-Agent

用来表示浏览器和操作系统的一系列属性
例如一下几种

  1. 多少位系统
  2. win几的系统
  3. 浏览器的内核
  4. 浏览器的版本号
    由于早期互联网时代大家的设备差异比较大,因此不同的设备需要不同的页面显示方式,差一点的设备就少显示一点图,好一点的设备就多显示一点,不同的浏览器对页面的支持程度也是不一样的,因此通过传输这个属性给服务器,服务器就知道该给你返回什么样的页面了

Referer

代表当前页面是从哪一个页面跳转过来的
如果当前页面是直接输入地址打开的,或者从收藏夹打开的,那就没有Referer
通过Referer,可以核定一个浏览器为广告商带来了多少的引流

Cookie

由于为了防止某些恶意网站入侵我们的电脑,使得我们的磁盘中的文件遭到篡改与删除,因此浏览器的网页都是不能访问硬盘的

因此,浏览器为网页提供了一系列api,让网页存储简单的数据,cookie就是其中的一种,是服务器发送给浏览器一些简单的数据,方便网页的跳转与再次打开

cookie以键值对的形式存储数据

比如可以传下面这几种数据

  1. 当前访问网页的用户信息
  2. 当前访问的位置
  3. 访问的次数和时间

服务器的响应报文中,set-cookie的数据是设置cookie的数据,比如存储用户信息

当浏览器再次访问这个网站时,网站会把之前存储的cookie传输给服务器,这样的话服务器就得到了身份信息,就不用再次登陆了

例如,给大家抓个包,看一下前面提到的这几个概念

GET /sw.js HTTP/1.1
(这里就是主机地址和端口)
Host: blog.csdn.net 
Origin: https://blog.csdn.net
Accept-Encoding: gzip, deflate, br
(这里是cookie)
Cookie: c_dsid=11_1668321926105.806691; dc_session_id=10_1668321931278.555733; log_Id_click=794; log_Id_view=1736; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1668322413; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1668075076,1668215971,1668304024,1668321927; c_page_id=default; c_pref=https%3A//blog.csdn.net/; c_ref=https%3A//mp.csdn.net/; c_segment=2; dc_tos=rl9xt8; log_Id_pv=676; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_19406376060-1636882844312-793122!5744*1*m0_60867520; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22m0_60867520%22%2C%22scope%22%3A1%7D%7D; __bid_n=183e5bc0225476c4084207; c_first_page=https%3A//blog.csdn.net/m0_60867520%3Fspm%3D1000.2115.3001.5343; c_first_ref=default; dc_sid=a39818fac3c56bf45e17bae53186475e; HWWAFSESID=1bd914e48a3f275855f; HWWAFSESTIME=1668321923442; FCNEC=%5B%5B%22AKsRol_XiY2H06P5Xlw3z7LQfwhl4kqvq5sIj4R2iX7vxEhCs08i5Qfm5nQ9hXeBbbv5FhhSbIwcDxwqNW-JDnQzByjf98hzA6ShijaMOwYSkJbQeQTeoHl1KMfL3s1v6Xg97Mlx6w-MMW0TDYDGmfwWd9298lo5DQ%3D%3D%22%5D%2Cnull%2C%5B%5D%5D; __gpi=UID=000009711177805a:T=1662280592:RT=1668304025:S=ALNI_MadB__bBPsEbHe_0fVn_E4rh8bltA; is_advert=1; firstDie=1; ssxmod_itna=eqRxRDBDcD9AKGKGH0hC07GkQD7GeiQq8eHYImDlxQwPGzDAxn40iDto=qhnornhiY=fKnOG+diGnrP0Iq7PrP5PfbnRedoD84i7DKqibDCqD1D3qDkbiYxiiDGdU8nDDx0rDG4iafmTy1pxKDUY2WrYhNk=idKeRqZAibK0GY=GWbqDrpeGG5GCh+w9hzKOhNKYD===; ssxmod_itna2=eqRxRDBDcD9AKGKGH0hC07GkQD7GeiQq8eHYeD6p4QqmxDskjDLQQeOum0Dqn+48Ye/wh68e/=GKe88/O0o6m/+fh758rrDpD=sjiepaKYNxTddHs=uzUF9x1/PnyRyE6=5BypZi5yDVWw1nAirZrmNHpPaylcFVQWhLPm8VCaa3tgbL=Ww7IB80EAp3bS86E7WGfgpUfBb63dFg6K6CpcLnIWFPbiXgZmUTxq6yDwXd1YUKkkRNXeexhrY3ZPeY7eKmD1h3AhGrEOb=h9TeFuDiDwgxPT1Kpnw9cE2c6/rKugaZmw1zE5GBdj0dCoQifoCO8omYOqbxhd3GiKY3orx3uYN2DcEopwiHgGTbhKwaertrwrc3dCQowLKjwizeKO8YN2CRqKwLoAMdkTidrT/MdWdKx6K5RHF2O83H+Rkdo7HbOc+bi67WcE=pEFmLt2k1ZpeOvwpApP=CoArbjCOC1a64oPD7jgDGcDG7uODNDx8TDD==; __gads=ID=4ea7d0a4ecd37ee1-2235438dd8d70085:T=1667202525:RT=1667202525:S=ALNI_MaMuEad1hYwTDZx_QZCGwFd0sQKhw; FPTOKEN=30$MopefTes+oZpPK6toPAhBx51Jkf9qoNou5sQ5nIqneIX4PhBtpAsxtEBc76AQs9WOaJjwxItblyB8EW/sLxs5T0I/kL/KjtpLbx6pk/ojEIhGiQzqoGscV8k9FHd4HmCpud/RXGieejdSIq95AICEhi1Erl95ummz/XBzvkWzFjSgo+/txL4p5ETCor0ixhOlDaIgbhfR2JBIHMSmhtQ+JbbP1LrdVB2+wxtLITOnssE02CuNBj0Gy/E/xsjoXQnuC/mIVOTaUEIRRaDkxOR6fOy/n50FWt84MYUuC26etIhLyJ9pVxZP3ss6H/fXqEzgrfgv4AiRzMR+wcHhU5cSCLlOdSislMsyQqKnLonQyEGR683E6xMtOl8CgDMZi+yTzZr6n5vMwHih5kMA2ZualamIb1KhHtyCrz/OzfeDMc=|2t9hFLuiMkraJiWOrBtyMNOEfpEtZpoKTRFhp0enI3o=|10|54642beb2d74356187b795abbc93d44c; c_dl_fpage=/download/u012513463/77747331; c_dl_fref=https://blog.csdn.net/qq_24950043/article/details/125714225; c_dl_prid=1665566040391_574973; c_dl_rid=1666093978240_243831; c_dl_um=-; AU=E5A; BT=1660286910129; UN=m0_60867520; UserInfo=1dd1ec314c054470a954e82931020212; UserName=m0_60867520; UserNick=Xiaolock830; UserToken=1dd1ec314c054470a954e82931020212; p_uid=U010000; uuid_tt_dd=10_19406376060-1636882844312-793122
Connection: keep-alive
Accept: */*
(这里是浏览器和操作系统的信息)
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15
Accept-Language: zh-CN,zh-Hans;q=0.9
(这里是浏览器跳转前的地址)
Referer: 
Service-Worker: script

构造http请求

有以下几种不同的构造方法

  1. 浏览起自己通过url构造请求
  2. form表单
  3. ajax

form表单

只支持get和post方法
其中的action表示要访问的网页
input中的name是键
input中的用户输入的值是值,和name构成键值对
如果是get请求,就将键值对放到url中,如果是post就放在body中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="http://www.sogou.com" method="get">
        <input type="text" name="aaa">
        <input type="text" name="bbb">
        <input type="submit" value="提交">
    </form>
</body>
</html>

最终的url长这样
在这里插入图片描述
如果是post方法,那我们只能用抓包工具来看body中的内容了

ajax

全称是Asynchronous Javascript And XML
其中的Asynchronous代表异步的

在之前的多线程中讲的同步(synchronized)表示的是互斥
而在网络通信中,同步代表发起请求者同时也接受响应,异步代表发起请求者不接受响应,由其他的人来推送过来

form的请求一定会触发页面的跳转
ajax的请求默认不会引发页面跳转

由于浏览器的原声ajax的api不好用,因此我们可以引入jquery,这个第三方库封装好的api更好用
jquery直接上网搜索即可,选择.min.js,复制其script标签
在这里插入图片描述

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
<script>
     $.ajax({
         type: 'post',
         url: 'http://sogou.com',
         data: 'http请求的body',
         contentType: 'x-www-form-urlencoded',
         success: function(body){
             //浏览器返回正常响应时调用这个函数,body为响应正文
             console.log('ok');
         },
         error: function(){
             //浏览器返回错误响应时调用这个函数
             console.log('error');
         }
     });
 </script>

使用这种方法在浏览器中会看到报错,这是因为默认情况下域名a是无法访问域名b的资源的,也就是说搜狗拒绝了我们的访问。如果我们的项目是在同一个服务器下相互访问的就不会报错

这种情况下,我们可以用postman来进行测试,这是一个专门用来构造请求的工具,方便了我们的测试

响应

状态码

我们上网常常看到的404网页就是一个状态码,表示了请求的状态,可以告诉我们请求是否成功,为什么失败
最常见的状态码有以下几种

类型

号码开头类型原因.
1xx信息性状态码接收的请求正在处理
2xx成功状态码请求正常处理完毕
3xx重定向状态码需要附加操作以完成请求
4xx客户端错误状态码服务器无法处理请求
5xx服务器错误状态码服务器处理请求出错

具体实例

200

表示访问成功
大家抓包时看到的最多的响应的状态码都是200

404

not found
产生错误的原因就是请求的路径错了
访问的资源服务器上没有了,就会返回404

403

表示访问访问被拒绝
也就是我们的访问权限不够,只有管理员或者特定的用户才能访问这个网站

500

表示服务器内部错误
也就是服务器里有bug,比如说空指针异常了,我们很少见到,除非是自己写的代码

504

表示访问超时
如果服务器的访问流量过大,就会出现访问超时的情况

302

表示重定向
如果以前的网站的域名不用了,换成了新的域名,就需要重定向,还有我们的网页跳转也是重定向

418

是一个彩蛋,418I’m a teapot
在许多年前,电脑上安装一个软件,很有可能安装下来的根本就不是你想要的那个软件
这是因为,运营商劫持了我们网上传输的数据,替代了新的数据给我们
为了防止这种事情发生,也为了防止黑客对我们数据的入侵,因此发明了更为安全的传输协议——HTTPS

加密

加密是指用密钥把明文变成密文
与之对应的,解密就是把密文变成明文

对称加密

而当一个服务器想要让客户端把传输过来的用户信息进行加密时,双方都要知道这个密钥是什么,这就是对称加密。但显然,你这个密钥被更多人知道,你的信息被破获的概率就更大,因此一个服务器给不同的客户端不同的密钥
但这样的话,服务器就需要同时掌握多个密钥,一一进行匹配,大量的浪费了资源

不对称加密

因此,根据数学上的一系列规律,发明了不对称加密,客户端的密钥是不同的,而服务器只用一个密钥就可以把所有的密文破解为明文,客户端拿到的是公钥,这个公钥告诉谁都可以,而服务器拿到的是私钥,这个私钥只能自己持有

但是,如果黑客先冒充客户端,向服务器获取了公钥,再冒充服务器,向客户端提供了自己篡改后的公钥。这时,客户端传输过来的数据就是按照黑客的钥匙加密的数据了,黑客就可以看了。而且还可以用之前获取的公钥对明文重新加密成正确的格式,发送给服务器,使服务器与客户端之间正常的工作

证书

证书是为了保证公钥是服务器提供的而不是黑客提供的
第三方公证机构会给各个服务器的资质进行审查,然后颁发证书
客户端在向服务器获取公钥前,会先对服务器获取证书,然后看这个证书是否合法,然后才会进行传输数据
因此,如果是没有证书的网站,浏览器会警告我们这个网站很危险,也有时候会告诉我们这个网站的证书过期了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++好用的网站

目录 洛谷www.luogu.com.cn 有道小图灵https://oj.youdao.com/csp 维基https://oi-wiki.org/ 1&#xff0c;洛谷 他的网址是www.luogu.com.cn。 这是一个好用的刷题网站&#xff0c;题库里有大约有2000多道题。 洛谷有题里有csp往年的题。 题库&#xff1a; 有题&#x…

怎么把PDF调方向保存?这几个方法值得收藏

小伙伴们在工作的时候&#xff0c;有时候领导会发PDF文件要你查阅重要内容&#xff0c;但不是每次收到的PDF文件都是无损的&#xff0c;有时候打开后发现里面内容杂乱并且页面方向不一致&#xff0c;这个时候有些小伙伴不知道怎么办&#xff0c;那么我们应该怎么把PDF调方向保存…

基于正交投影的实时三维人体姿态估计

王亦洲课题组 ECCV 2022 入选论文解读&#xff1a;基于正交投影的实时三维人体姿态估计 本文是对发表于计算机视觉领域顶级会议 ECCV 2022的论文 Faster VoxelPose: Real-time 3D Human Pose Estimation by Orthographic Projection 的解读。该论文由北京大学王亦洲课题组与微软…

Beam Failure Detection

微信同步更新欢迎关注同名modem协议笔记 正如上篇所述NR中所有的上下行信道的发送和接收都是基于波束。基站通过对信道质量的测量来动态选择UE和基站之间波束的方向和频率&#xff0c;进而完成通信。NR中无线链路检测可以分为两种&#xff0c;一种是4G中常见的radio link mon…

《Linux》day5--ssh——ssh登录与scp传文件

文章目录ssh登录基本用法配置文件密钥登录执行命令scp传文件基本用法使用scp配置其他服务器的vim和tmuxssh登录 基本用法 远程登录服务器。 ssh userhostname其中&#xff1a; user&#xff1a;是用户名hostname&#xff1a;是IP地址或域名 第一次登录会提示&#xff1a; …

城市道路积水识别监测系统

城市道路积水识别监测系统基于机器视觉分析&#xff0c;燧机城市道路积水识别监测系统实时识别街道路面积水情况&#xff0c;对严重积水时立即报警。城市道路积水识别监测系统对低洼区域进行实时监测&#xff0c;一旦城市道路积水识别监测系统监测到街道路面积水时&#xff0c;…

【附源码】Python计算机毕业设计宿舍管理系统设计

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【雨夜】一次nacos 导致的 CPU 飙高问题

今天下午突然 出现 测试环境 cpu飙高&#xff0c;干到了 60%&#xff0c;其他项目 响应时间明显变长。。。有点吓人&#xff0c;不想背锅 项目背景 出问题的项目是 需要连接各个不同nacos 和不同的 namespace 进行对应操作的 一个项目&#xff0c;对nacos的操作都是httpClien…

OSS(minio使用手册)

minio 官方文档地址:MinIO High Performance Object Storage — MinIO Object Storage for Kubernetes 1.本地客户端下载 1.1 docker 版本&#xff1a; docker pull minio/mc docker run minio/mc ls play docker run -it --entrypoint/bin/sh minio/mc (使用mc客户端操作其他…

2022年数维杯国际大学生数学建模挑战赛C题如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病解题过程

2022年数维杯国际大学生数学建模挑战赛 C题 如何利用大脑结构特征和认知行为特征诊断阿尔茨海默病 原题再现&#xff1a; 阿尔茨海默病&#xff08;AD&#xff09;是一种起病隐匿的进行性神经退行性疾病。临床特征为全谱痴呆&#xff0c;包括记忆障碍、失语、流利不畅、失认、…

Qt QJsonObject初始化列表的使用问题

在VS2013Qt5.9.7上&#xff0c;QJsonObject的初始化列表构造函数有BUG QJsonObject::QJsonObject(std::initializer_list<QPair<QString, QJsonValue> > args)注&#xff1a;使用初始化列表前先要开启编译选项Q_COMPILER_INITIALIZER_LISTS 以下代码Debug异常 QJs…

SpringBoot整合tkMapper的版本问题

文章主旨&#xff1a;有问题首先看官网 昨天新建了个Spring Boot工程&#xff0c;版本为2.6.13 想要整合 tk.mapper&#xff0c;就去官网查找依赖&#xff0c;如下&#xff1a; <dependency><groupId>tk.mybatis</groupId><artifactId>mapper</a…

基于sklearn实现LDA主题模型(附实战案例)

目录 LDA主题模型 1.LDA主题模型原理 2.LDA主题模型推演过程 3.sklearn实现LDA主题模型&#xff08;实战&#xff09; 3.1数据集介绍 3.2导入数据 3.3分词处理 3.4文本向量化 3.5构建LDA模型 3.6LDA模型可视化 3.7困惑度 LDA主题模型 1.LDA主题模型原理 其实说到LDA…

web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【附源码】计算机毕业设计JAVA房产客户信息管理系统

【附源码】计算机毕业设计JAVA房产客户信息管理系统【附源码】 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#x…

新唐(nuvoton)MCU软件开发指南—环境搭建设置

新唐MCU软件开发指南—环境搭建设置 1. 下载并安装Arm Keil MDK https://www.nuvoton.com/tool-and-software/ide-and-compiler/keil-download/ 2. 申请免费版的Keil License&#xff0c;并激活 https://www.nuvoton.com/tool-and-software/ide-and-compiler/get-keil-mdk-…

Tableau安装详解及密钥申请

文章目录Tableau介绍下载软件申请密钥安装软件❤️ 作者简介&#xff1a;大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生&#xff0c;蓝桥杯国赛二等奖获得者&#x1f41f; 个人主页 &#xff1a;https://blog.csdn.net/qq_52007481⭐ 个人社区&#xff1a;【小鱼干爱…

Linux系统了解 Samba服务器配置的工作流程

了解 Samba服务器配置的工作流程 当Samba 服务安装完毕&#xff0c;并不是直接可以使用 Windows 或 Linux的客户端访问Samba服务器&#xff0c;还必须对服务器进行设置&#xff1a;告诉 Samba 服务器将哪些目录共享出来给客户端进行访问&#xff0c;并根据需要设置其他选项&…

微服务架构陷阱与挑战

六大陷阱 粒度太细 服务关系复杂 需求分析、方案设计、测试、部署。。。难度都会增加 例如&#xff1a; 分布式服务如何保证数据一致性分析设计的时候需要考虑的影响点变多 团队效率低下 需求分析、方案设计、测试、部署。。。工作量都会增加 例如&#xff1a; 接口设计…

Xintell——全生命周期的模型建设+智能数据中台

在业务反欺诈、运营及数据分析上&#xff0c;经常会涉及到模型。模型就是基于目标群体的大规模采样数据&#xff0c;挖掘出某个实际问题或客观事物的现象本质及运行规律&#xff0c;利用抽象的概念分析存在问题或风险&#xff0c;计算推演出减轻、防范问题或风险的对策过程&…