当前位置: 首页 > news >正文

网站建设常用工具免费公司网站设计

网站建设常用工具,免费公司网站设计,网站模板下载,优化前网站现状分析目录 ​编辑一、HTTP 协议是什么 二、抓包工具的使用 三、HTTP 请求 1、认识 URL 2、认识方法 3、认识请求 “报头” HOST #xff1a; Content-Length 和 Content-Type​编辑 User-Agent Referer Cookie 四、HTTP 响应 1、认识状态码 2、通过 form 表单构造 H… 目录 ​编辑一、HTTP 协议是什么 二、抓包工具的使用 三、HTTP 请求 1、认识 URL 2、认识方法 3、认识请求 “报头” HOST Content-Length 和 Content-Type​编辑 User-Agent Referer Cookie 四、HTTP 响应 1、认识状态码  2、通过 form 表单构造 HTTP 请求 3、通过 ajax 构造 HTTP 请求 4、使用第三方工具构造 HTTP 请求 五、HTTPS 1、认识HTTPS 2、加密 3、证书 一、HTTP 协议是什么 HTTP 属于是应用层最广泛使用的协议之一 浏览器获取到网页就是基于 HTTP 所以我们可以认为HTTP 就是 浏览器 和 服务器 之间的交互桥梁 当我们在浏览器中搜索网址的时候这个东西更准确的说叫做 URL 浏览器就会根据这个 URL 构造出一个 HTTP 请求发送给服务器服务器就会返回一个 HTTP 响应包含了 html css js图片 浏览器再把得到的 html 数据进行显示出来渲染 二、抓包工具的使用 HTTP 协议的交互详细过程是可以借助第三方的工具来看到的称为 “抓包” 工具 抓包工具有很多我这里使用的是 fiddler 当我们打开 fiddler 之后它就会立即显示出当前电脑上某个程序使用 http 和服务器交互的过程 fiddle 本质上是一个代理程序使用的时候有两个注意事项 1、可能和别的代理程序冲突使用的时候要关闭其它的代理程序包括一些浏览器插件 2、要想正确抓包还需开启 https 功能 代理分两种正向代理和反向代理 代表客户端的代理叫做正向代理 代表服务器的代理叫做反向代理 https 是基于 http 搞出来的进化版协议 当下互联网上绝大部分的服务器都是 https fiddler 默认不能抓 https 的包需要我们手动启用一下 https 并安装证书 把这几个复选框都给勾上 fiddler 才能抓取 https 首次勾选的时候会弹出一个对话框问你是否要安装对应的证书英文 这个时候要选择 “是” 当我们再重新打开一个页面的时候就可以看到产生的 http 请求 浏览器打开一个页面对应的 HTTP 请求可能是一个也可能是多个 其中这个就是我们最关注的一条再请求 百度 的首页页面的时候其它的请求都是基于这个请求产生的百度主页里其他代码又产生了别的请求  双击左侧请求列表中的选项就能看到请求中的详细情况 http 请求是有一定的格式的fiddler 会按照格式解析呈现出不同的显示效果此处就看最原始的效果raw 观察抓包结果可以看到当前 http 请求其实是个 行文本 格式的数据 行文本 的格式相比于 tcp 这种二进制格式来说就更方便用户直接观察 响应数据本来也是文本的但是有的服务器会对响应进行压缩变成二进制了压缩式为了节省带宽  有了以上的认知之后我们就可以来了解一下 http 里面一些关键信息的含义了 三、HTTP 请求 我们点开响应内容  首行包括三个部分之间使用 空格 来区分 GET HTTP 的方法method URL 俗称的网址叫做唯一资源定位符 HTTP/1.1 版本号 URL 叫做唯一资源定位符标识互联网上的唯一的资源的位置描述资源在哪在哪个服务器的哪个目录下的哪个文件中 还有一个 和 URL 名字类似的东西 URI唯一资源标识符身份标识为了和别的资源分别开 实际上URL 也可以起到身份标识的效果URL 也可以视为是一个 URI  1、认识 URL 先来看一下 URL 的协议格式  URL 的协议格式是由 rfc 系列文档定义的 tcp ip udp 协议格式都是 rfc 系列文档定义的 URL 不是 http 专属的很多协议都可以使用 URL  URL 的最关键的四个部分 1、域名 / IP 地址 2、端口号 3、带层次的路径 4、查询字符串以键值对的方式来组织的 一个 URL 这里的几个部分有些是可以省略的 比如这个省略了端口省略端口的时候浏览器会提供默认端口 对于 http 来说默认端口是 80对于 https 来说默认端口是 443 / 也是路径没有省略只是有点短代表 “根目录” 这里的 “根目录” 指的是 HTTP 服务器的根目录 HTTP 服务器是系统上的一个进程就委托这个服务管理系统上的一个特定的目录这个目录里的资源都可以让外面去访问 HTTP 协议 和 HTTP 服务器 之间是什么关系 一个 HTTP 服务器 提供的资源是很多的不同的路径拿到的是不同的服务器 但是正常情况下是这个样子的  这个 URL 里就带有 query string  query string 是以 开头以键值对的方式组织键值对之间使用 分割键和值之间使用 分割 URL 里面有些字符是有特定含义的所以就需要对内容进行重新编码urlencode如果不编码直接写中文浏览器可能就没办法正确识别了 2、认识方法 方法描述了这次请求的语义想干什么  实际开发中这里的方法大部分都是用不到的最常见的就是两个GET POST 此处看到的 HTTP 的方法的语义是 HTTP 设计者的美好的想法但是实际上开发的时候语义仅供参考  触发 GET 请求的方式 1、在浏览器的地址栏里直接输入 URL  2、html 里的 link scriptimga.... 3、通过 js 来构造 GET 请求 第一行称为 “首行”剩下来的被圈起来的部分叫做 “header” 部分 POST 典型的就是登录 登录跳转的时候会涉及到 POST另一种典型情况就是上传文件 当然也有其它触发 POST 请求的情况但是这两种更为典型 HTTP 请求可以分成是四个部分 1、首行 2、请求头header 3、空行 4、正文body 如果是 GET 请求没有 body 如果是 POST 请求一般有 body 在抓包结果中我们可以看到post 的结果是程序员自定义的内容 其中uuid 指唯一身份标识可以通过一定的算法构造出这样的一个长字符串每次构造的长字符串都是不同的 这里存放的数据的内容和格式都是程序员自主定义的 GET 和 POST 之间的典型区别  1GET 也可以给服务器传递一些信息只不过 GET 传递的信息一般都是放在query string 而POST 传递信息则是通过 body 2GET 请求一般是用于从服务器获取数据POST 一般是用于从服务器提交数据语义上的差别 3GET 通常会被设计成幂等的而 POST 不要求幂等 4GET 可以被缓存而POST 一般不能被缓存 注意这里的区别只是一个习惯用法GET 也不是不能有 body POST 也不是不能有 query string只是非常少见 GET 和 POST 其实没有本质区别在大部分场景下彼此之间都能够互相替代 但是在使用习惯上还是有差异的 幂等可以理解成相同的输入得到的结果也是相同的 缓存指的是把请求的结果保存下来了下次请求就不必真请求了直接取缓存结果了 所以缓存的前提是幂等 3、认识请求 “报头” 下列部分就是 header 部分这里是一堆键值对 每一行是一个键值对每一个键值对之间用 分割 这些键值对都是 HTTP 事先定义好的有特定含义的 比如 HOST 大概描述了服务器大概所在的地址和端口 HOST 这里的 地址 和 端口用来描述你最终要访问的目标 也就是说这里的内容大概率和 URL 中是一样的 也有不一样的情况 Content-Length 和 Content-Type Content-Length 表示 body 中数据的长度 Content-Type 表示请求的 body 中数据的格式 如果是 GET 请求没有 body请求中没有这两个字段 如果是 POST 请求有 body请求中必须有这两个字段 User-Agent 主要描述了当前 浏览器 和 操作系统 的版本 最早期的浏览器只支持文本后来支持图片再后来支持视频音频..... 网站开发者在开发的时候做的网页是否要带图片视频之类的就很难抉择 于是干脆分成了多个版本针对不同的浏览器做多个版本判定请求的 user-agent根据这个不同的类别返回不同的版本内容 现在User-Agent 主要用来区分 PC 和 移动 Referer 表示当前页面的 “来源” 如果直接通过地址栏输入地址直接点击收藏夹....都是没有 referer 我们浏览网页的时候会发现网页上常常会有广告广告主按照广告的点击量给广告平台发钱广告被点击了多少次次数如何衡量这些次数是由广告商和广告平台一起统计的如果统计的数据对上了那么就没有问题如果数据没有对上那么程序员就要去查问题的原因 但是一个广告也可能被投放在了多个平台上那么就是用 referer 来分辨广告是在哪个网页上被点击的 HTTP 本身是明文传输意味着很容易能够获取到请求内容也有办法篡改内容 那么有没有可能本来是来自搜狗的请求但是 referer 被改成了别人的呢 referer 是 HTTP 层面的东西交换机和路由器正常情况下是不会干涉的但是有时候运营商为了钱可能会出现篡改数据的情况 Cookie Cookie 是一个非常重要的 header 属性 本质上是 浏览器 给 网页 提供的 本地存储数据 的机制 网页默认是不允许访问你计算机的硬盘的安全 Cookie 就相当于是 浏览器对于访问硬盘做出了明确的限制 Cookie 就是通过键值对的方式来组织数据的 至于 Cookie 中具体存的内容是什么也就是程序员自定义的部分 Cookie 是从哪来的 Cookie 中的数据是来自于服务器的 服务器会通过 HTTP 响应的报头部分Set-Cookie字段 服务器来决定浏览器的 Cookie 要存什么 Cookie是存在哪的 可以认为是存在于浏览器中存在于硬盘的 Cookie 在存的时候是按照 浏览器 域名 维度来进行细分的 不同的浏览器各自存各自的Cookie  同一个浏览器不同的域名对应不同的Cookie Cookie 里面的内容不光是键值对同时还有过期时间 Cookie 要到哪里去 回到服务器去 客户端同一时间是有很多的 客户端这边就会通过 Cookie 来保存当前用户使用的中间状态当客户端访问浏览器的时候就会自动的把 Cookie 的内容带入到请求中服务器就知道现在客户端时什么样的了 四、HTTP 响应 1、认识状态码  响应也是由四个部分构成 1、首行 2、header  3、空白行表示 header 的结束标记 4、body HTTP 的状态码描述了这次响应的结果 200 OK成功了 404 Not Found访问的资源不存在 403 Forbidden 访问被拒绝没有权限 302Move Temporanly 重定向类似呼叫转移 500服务器内部错误服务器代码抛异常 504 : getway timeout响应时间太久 重定向和请求转发的区别 重定向 请求转发 重定向可以重定向到外部资源跳转到别的网站 请求转发只能该服务器内部的资源之间转发少了一次交互更高效 这么多的状态码其实是可以分为几个大类的 HTTP 协议里面有不少地方是可以由程序员自定义的 1、URL 中的路径 2、URL 中的 query string 3、header 中的键值对 4、header 中的 Cookie 键值对 5、body HTTP 的报文协议格式 2、通过 form 表单构造 HTTP 请求 对于 GET  1、地址栏直接输入 2、点击收藏夹 3、html 中 的 link scriptimga..... 4、通过 form 标签 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head body!-- 表单标签允许用户和服务器之间交互数据 --!-- 提交的数据以键值对的结构来组织 --form actionhttps://www.sogou.com methodgetinput typetext name studentName!-- input type submit 这时候构造了一个特殊的提交按钮value 属性描述了按钮中的文本 --!-- 点击这个按钮就会触发该 form 表单的 “提交操作”也就是构造 HTTP 请求发给服务器 --input typesubmit value提交/form /body /html 我们打开这个网页然后输入 zhangsan 后在 fiddler 中观察HTTP 的请求 除了首行之外剩余部分都是浏览器自主添加的 可以看到我们构造的这个请求搜狗的服务器没有做什么特殊的处理仍然是噗噗通通的返回搜狗主页了 我们后续写服务器代码就可以根据需求来获取 URL 中的 query string 从而完成不同的功能 对于 form 构造的 POST 请求来说body 里面的数据格式就和 query string 是非常相似的也是键值对结构键值对之间通过 分割键和值之间使用 分割 form 标签只能构造 GET 和 POST 无法构造 PUT DELETE 等 3、通过 ajax 构造 HTTP 请求 ajax 也是浏览器提供的一种通过 js 构造 HTTP 请求的方式 a 指的是 asynchronize异步的意思 同步A 始终盯着 BA 负责关注 B 啥时候就绪 异步A 不盯着 BB 就绪后主动通知 A html 中通过 ajax 发起 HTTP 请求就属于是 “异步” 的方式 这一行代码执行 “发送请求” 操作之后不必等待服务器响应回来就可以立即先往下执行当服务器的响应回来了之后再由浏览器通知到咱们的代码中 代码中如何使用 ajax 1、js 原生提供的 ajax 的 api但是原生的 api 很难用 2、jquery 提供的 ajax api 针对原生 api 的封装简单很多 我们这里选择更简单的第二种写法 jquery 中$ 是一个特殊的全局对象 jquery 的 api 都是以 $ 的方法的形式来引出的 ajax 这个方法的参数只有一个参数是一个 js 对象大括号表示的键值对 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /head body!-- 引入 jquery --script src https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js/scriptscript$.ajax({type :get,url:https://www.sogou.com?studentNamezhangsan,// 此处 sunccess 就声明了一个回调函数就会在服务器响应返回到浏览器的时候触发该回调//正式此处的回调体现了异步success:function(data){//data 则是响应的正文部分console.log(当服务器返回的响应到达浏览器之后浏览器触发该回调通知到我们的代码中);}});console.log(浏览器立即往下执行后续代码);/script /body /html 注意该代码直接执行只是能看到构造的请求无法获取到正确的响应 因为发送请求给搜狗服务器人家的服务器没有处理我们的请求 请求构造的顺序是从上到下的但是收到响应的顺序/触发回调的顺序是不确定的网络上可能会后发先至 等到后面我们自己编写服务器的时候就可以给自己的服务器发送请求自然就能够处理了 和 form 相比ajax 功能更强 1、支持 putdeelte 等方法 2、ajax 发送的请求可以灵活设置 header  3、ajax 发送的请求的 body 也是可以灵活设置的 4、使用第三方工具构造 HTTP 请求 我们可以使用 postman 进行构造 HTTP 请求 1、先注册登录 2、创建一个 workspace 3、新建一个标签页 除了刚才手动构造之外postman 还有一个很强的功能 postman 可以生成构造请求的的代码方便我们在自己的程序中集成 五、HTTPS 1、认识HTTPS HTTPS HTTP 安全层SSL SSL用来加密的协议 网络上如果明文传输数据是非常危险的需要加密才能保证安全 HTTPS 其实主要涉及到的是其中的 SSL 部分 SSL 并非仅仅是在 HTTPS 中使用 2、加密 进行安全传输的核心就是加密 加密其中一种最简单有效的办法叫做 “对称加密” a明文 key b(密文)——加密的过程 b(密文) key a明文——解密的过程 同一个密钥既可以用来加密也可以用来解密就称为对称密钥 对称加密的安全性的前提就是密钥不能被黑客知道 密钥就可以认为是一串 数字 / 字符串 加密的过程就可以理解为把明文和字符串进行一些列的数学变换其中最简单的一种方式就是 ^ 由于黑客不知道密钥是什么 即使黑客截获了加密的数据也不知道这里是什么意思 客户端生成密钥还是服务器生成密钥 由于一个服务器对应很多个客户端这些客户端每个人都有不同的密钥 假设客户端生成一个密钥客户端就需要把密钥告知服务器 客户端生成密钥发给服务器此时由于密钥刚刚生成此处的密钥只能明文传输密钥就可能被黑客给截获了 以上问题关键在于需要想办法把密钥传递过去因此还得加密 此处我们可以引入非对称加密 生成一对密钥公钥和私钥 明文 公钥 密文——使用公钥加密 密文 私钥 明文——使用私钥解密 公钥可以公开私钥是私藏的 服务器生成一对公钥私钥其中客户端持有公钥服务器持有私钥 此时客户端的公钥从服务器拿黑客也能知道公钥但是黑客不知道私钥因为私钥是服务器自己持有的 客户端使用公钥对对称密钥进行加密传输给服务器服务器就可以拿着自己的私钥来解密得到对称密钥 此时客户端服务器就可以使用这个对称密钥进行后续传输了 为什么有了非对称加密还要继续保留对称加密呢 对称加密速度快非对称加密速度慢 使用对称加密是为了尽可能提高整体的速度 3、证书 但是问题来了有时候黑客会模仿服务器给客户端发送密钥也就是中间人攻击 中间人攻击的要点在于客户端不知道响应式来自于真实的服务器还是黑客的 解决中间人问题的关键在于让客户端能够辨别当前这个响应公钥是服务器真实的公钥 于是我们引入了 “证书”本质上是引入了第三方的公证机构 服务器网站在设立之初就需要去专门的认证机构申请证书提供一些资质 审核通过就会给你颁发证书服务器生成的公钥也就包含在这个证书中 客户端向服务器请求公钥的时候就不单单是请求一个公钥而是把整个证书都请求过去了 客户端拿到证书之后就可以对证书进行校验验证一下证书是不是假的是不是被篡改的 如果发现证书是无效的浏览器就会直接弹窗告警 客户端拿到证书就可以对证书进行一个校验 证书上面会带有一个特定的字段叫做证书的签名客户端可以通过证书的签名看它是不是有效的证书 签名就是一个被加密的字符串 客户端就可以使用认证机构提供的公钥进行解密解密之后得到的结果相当于是一个 hash 值 类似于 tcp 和 udp 里面的校验和根据证书的其它字段综合计算出来的结果 客户端就可以使用同样的 hash 算法针对其它的字段再计算一次 hash值得到 hash2 看看 hash1从签名中解出来的和 hash2客户端自己算的如果这两个值相同就说明证书是有效的没有被篡改过 黑客能否把证书给篡改了 一旦替换了公钥意味着客户端算的 hash2 和签名解密出阿里的 hash1 就对不上了客户端就知道无效 另一方面黑客不知道认证机构的私钥即使黑客自己算好了新的篡改之后的 hash 值也无法加密生成签名 认证机构也有一组公钥和私钥私钥用来加密 hash 值 得到签名公钥是客户端拥有的使用公钥解密签名获取 hash
http://www.sadfv.cn/news/99621/

相关文章:

  • 网站开发答辩难点mp6 wordpress 静态
  • 烟台优化网站建设如何建设软件下载网站
  • 苏州调查公司电话搜索引擎优化的流程
  • 淘宝客返利网站开发网站开发技术选择
  • 永康新站优化wordpress 幻灯片无法显示
  • 域名到期对网站影响济南网站建设兼职
  • 廉洁四川官方网权威发布优化自己的网站
  • 做互助盘网站多少钱dede网站迁移
  • 购物网站的建设与维护铜仁建设厅官方网站
  • 广州网站seo营销模板用jsp做一网站的流程图
  • 网站页面管理为什么要建设医院网站
  • c2c网站都有哪些网站优化软件开发
  • 小型网站建设费用金融投资网站建设
  • 沙田镇网站仿做专做排版网站
  • 滨海做网站哪家公司好电商 网站模板
  • 个人可以做视频网站吗建立网站信息发布登记制度
  • 电脑在哪里制作网站上饶便宜的网站建设
  • wordpress用网站测速小兔自助建站系统
  • 建设众筹类网站时空赣州网
  • 上海网站建设公司怎么样网站建设需求材料
  • 网站后台建设公司网易企业邮箱注册申请
  • 店铺只做商品展示网站怎么做什么叫网页
  • asp响应式h5网站源码下载关键词查询工具软件
  • 做公司网站注意什么政协网站信息化建设的作用
  • php做网站后台教程运城做网站
  • 外贸做企业什么网站建设网站续费合同
  • 抓取网站源码怎么做镜像郑州市住房和城乡建设厅网站
  • 站长工具官方网淮南市重点工程建设管理局网站
  • 设计学校网站模板免费下载星空无限传媒官网免费下载
  • 企业自己可以做视频网站吗php网站优点