栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

我要把海誓山盟写进HTTP协议中,因为我是浪漫的程序猿

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我要把海誓山盟写进HTTP协议中,因为我是浪漫的程序猿

HTTP协议

概述抓包工具 fiddlerHTTP协议的格式

HTTP请求

请求行

URL方法 请求报头 HTTP响应

状态行body 构造HTTP请求

form标签ajax HTTPS协议

加密魔高一尺道高一丈

概述

HTTP协议是前后端交互的“桥梁”

请求和响应都要基于网络

HTTP协议的模式:一发一收
网络编程中还有其他的模式:多发一收、一发多收、多发多收
一发一收是web开发中最主流的模式

网络通信要经过WiFi、运营商的一些节点(交换机、路由器),黑客容易入侵这些设备,获取网络通信的数据,运营商也会分析设备上的数据

抓包工具 fiddler

官网下载即可

fiddler读取你电脑上网卡的数据,相当于一个“代理”

删除所有请求:选中任意一条请求,Ctrl+A(选中所有请求) delete

fiddler默认是不显示HTTPS的请求的,勾选响应内容,才可以显示HTTPS的请求

HTTP协议的格式 HTTP请求

请求行

方法 URL 版本号

URL

URL就是我们常说的“网址”,标识互联网上唯一的资源地址

服务器地址
标识互联网上的一个具体的主机(服务器)
可以是IP地址,也可以是域名
如 百度的IP地址:202.108.22.5
百度的域名是:www.baidu.comDNS系统专门负责域名解析,将域名解析成IP地址端口号
标识主机(服务器)上的一个应用程序
端口号省略时,浏览器会根据协议类型自动决定使用哪个端口,HTTP协议默认使用端口号80,HTTPS默认使用端口号443路径
标识该主机程序上的哪个资源,如网页、图片…query String
客户端给服务器传递的参数
以键值对的形式传递的
键值对之间 & 分割
键和值之间 = 分割
这里的键值对是程序员自己定义的,外人根本看不懂urlencode
对特殊符号转译的过程就叫做urlencode
url中的某些符号是有特殊含义的,如 # ? / … 如果queryString中有特殊字符, 为了避免url格式错误,queryString中的一些特殊符号会被转译,某些浏览器会对中文字符转译
方法

GET
触发GET请求:直接在浏览器地址框中输入URL,点击浏览器收藏夹中的链接;HTML中的一些标签(浏览器自动根据img中的src的URL构造出一个请求) ;使用JS在浏览器上构造一个请求(ajax);各种编程语言(只要能访问网络)都可以构造请求
GET请求的长度并没有限制,通过RFC2616可以得知URL的长度并没有限制POST
触发POST请求最常见的情景登入系统GET和POST的区别GET和POST在本质上没有区别,使用GET的场景可以使用POST,使用POST的场景可以使用GETGET习惯上把客户端的数据通过queryString传递给服务器(body一般是空的);POST习惯上把客户端的数据通过body传递给服务器(queryString一般是空的)(注意:只是习惯上,GET和POST的queryString和body 可以是空,也可以不为空)GET习惯上从服务器获取数据;POST习惯上是用于客户端向服务器传输数据 注意:只是习惯上
一般情况下,程序员会把GET请求的处理,实现成“幂等”;POST请求的处理,不要求实现成“幂等” 注意:只是一般情况GET请求可以被缓存,可以被浏览器保存在收藏夹中;POST不可以 请求报头

Host
表示该请求所对应的服务器的地址(可以是域名,也可以是IP)

Content-Length
表示body的长度,单位是字节

ContentType
表示body的样式
常见样式:

application/x-www-form-urlencoded: form 此时body就类似于queryString的格式来组织数据(title=2&author=3)

multipart/form-data: form 这种格式出现在HTML上传文件时

application/json: body以JSON的格式组织数据(最常见的一种格式)
键值对的格式,{}中放键值对;键和值之间:分割;键值对之间,分割

User-Agent

User-Agent的使用是为了使网站兼容各种浏览器,由于早期的浏览器功能不够强大,差异很大,User-Agent作用很大;比如某个服务器不支持视频,服务器得到这个浏览器的版本就不返回带视频的页面,返回不带视频的页面喽
现在浏览器的功能差不多了,User-Agent的作用不大,用来区分PC端和移动端

Referer
表示这个页面从哪里来,header中也可能没有Referer
在浏览器地址栏中输入URL或点击收藏栏中链接 构造的请求中没有Referer
网站的广告项目就与Referer相关

cookie
cookie中存键值对格式的数据,键值对之间;分割;键和值之间=分割;内容由程序员自定义,网站不同,cookie自然不同
cookie就是浏览器提供的让程序员在客户端持久保存数据的一种机制,网页中的代码不能操作本地的硬盘(JS中无法读取本地文件),所以这些数据不能以文件的形式存储在硬盘中,只能以键值对的形式存储存储在硬盘上,通过浏览器管理

cookie中键值对的获取和使用
cookie用于HTTP请求中
cookie通过HTTP响应中的Set-cookie获取

HTTP响应


响应正文就是显示在浏览器上的页面,所以响应正文的格式是HTML,很多服务器返回HTML都是压缩过的,节约网络带宽 状态行

版本号 状态码 状态码的描述

状态码

状态码
1**等会继续
2**成功
3**重定向
4**客户端问题
5**服务器问题
body

响应中body中的内容在网页上显示

构造HTTP请求

任何编程语言,只要能访问网络,都可以发送HTTP请求

form标签
    //action中是服务器的地址 method中是方法,方法只支持GET和POST
    //name 和 password是提交给服务器的参数,在queryString中以键值对的形式存在
    

   //方法改为POST
    

ajax

ajax是Javascript给HTTP发送请求的方式,而jQuery是JS的一个重要的第三方库,对ajax提供了一个封装的版本,可以通过jQuery实现ajax

如何安装jQuery?
直接在代码中引入jQuery的cdn链接!!!

cdn是互联网的一种基础设施,可以想象成一组服务器,是运营商提供的,存在的目的是为了加快用户访问速度。
客户端和服务器的距离比较远,传输数据的过程还要经过许多的节点(路由器),尤其是在传输大文件(网页的背景图片啥的)的时候,速度会慢;运营商在全国各地都有cdn服务器,互联网产品会把一下静态资源放到cdn服务器中(给钱的哦),用户访问时就可以从当地的cdn服务器中获取资源
jQuery.js就经常被各种网站访问到,所以jQuery也是可以放在cdn服务器上的

搜索“jQuery cdn”

点击minified
复制src中的链接,粘贴到script标签中,自动下载jQuery

GET


    

$ 是JS的一个对象,jQuery里面的各种方法就是$的成员url 是服务器的地址success 是回调函数,因为ajax是“异步”的,请求成功了,响应回来了,就由浏览器自动的调用这个函数data 响应的bodystatus 响应的状态

    
    

POST

    

ajax有一个重要的限制,默认情况下,ajax不能跨域操作
ajax通过JS代码触发,JS代码在一个html文件中,这个文件的地址(本地文件)是域名1; 接受请求的服务器的地址是域名2;
ajax要求这两个域名是相同的,否则会报错的;如果服务器开放了跨域,域名不同的也能通过ajax的方式访问;
大部分服务器是不会开放跨域的,因此ajax一般只能访问自己的服务器,而无访问别人的服务器
所以通过ajax开发“爬虫”就别想了

HTTPS协议

HTTPS协议是在HTTP协议基础上加了一个“加密层”(TLS)

加密

对称加密
加密和解密用一个密钥;客户端生成一个对称密钥,用于加密,服务器用它来解密非对称加密
服务器生成公钥私钥,公钥是公开发布的,私钥只有服务器知道;
客户端用公钥加密,服务器用私钥解密;对称加密对机器资源的损耗是远远远低于非对称加密的对称加密传递内容,非对称加密传递对称密钥

一个服务器与许多的客户端连接,每个客户端都和服务器有一个自己的密钥;每个客户端在连接之前生成一个自己的密钥,在连接时把密钥告诉服务器,由服务器保存,但是被黑客入侵的网络设备可以轻而易举的获取密钥,后续的加密数据传输也就形同虚设。
使用非对称加密传递密钥服务器生成一个公钥私钥密钥对,公钥发布出去(谁都可以获取,包括黑客);私钥只有自己知道客户端用公钥将对称密钥加密,密文传递给服务器,服务器用私钥解密,获取对称密钥黑客中途获取对称密钥的密文,没有私钥,也无法解密的客户端和服务器可以使用对称密钥进行密文传输了

魔高一尺

中间人攻击
劫持服务器给客户端公钥,用自己的公钥代替,从而导致对称密钥泄露

黑客自己生成一个公钥(“黑公钥”)私钥(“黑私钥”)密钥对,在客户端向服务器询问公钥时,“狸猫换太子”,把“黑公钥”给客户端,同时获取真正的公钥,待到截取客户端用“黑公钥”加密对称密钥的密文,再用“黑私钥”解密,成功获取到对称密钥,为了防止被发现,用真正的公钥加密对称密钥,发送给服务器

道高一丈

引入第三方公证机构
通过第三方公证机构,向服务器发放证书(包含公钥),客户端拿到服务器的证书,去第三方公证机构检查,确认合法性,获取公钥

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号