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

网站开发搭建ssc p2p 互助浙江广厦建设职业技术学院招生网站

网站开发搭建ssc p2p 互助,浙江广厦建设职业技术学院招生网站,营销型网站特点,在线制作离婚证图片一、应用层协议 我们已经学过 TCP/IP , 已然知道数据能从客户端进程经过路径选择跨网络传送到服务器端进程。 我们还需要知道的是#xff0c;我们把数据从 A 端传送到 B 端#xff0c; TCP/IP 解决的是顺丰的功能#xff0c;而两端还要对数据进行加工处理或者使用#xf…一、应用层协议 我们已经学过 TCP/IP , 已然知道数据能从客户端进程经过路径选择跨网络传送到服务器端进程。 我们还需要知道的是我们把数据从 A 端传送到 B 端 TCP/IP 解决的是顺丰的功能而两端还要对数据进行加工处理或者使用所以我们还需要一层协议不关心通信细节关心应用细节这层协议叫做应用层协议。而应用是有不同的场景的因此应用层协议经常是需要“自定义协议”的通常情况下可以基于一些设计好的协议进行定制HTTP 之所以应用特别广主要原因就是可定制性特别强。 二、HTTP 报文格式 学习 HTTP 协议最主要的就是认识它的报文格式。我们可以通过抓包来获取到 HTTP 的报文格式下面以浏览器访问百度时的请求响应为例进行抓包 抓包原理 抓包工具 相当于一个 “代理”。浏览器访问 www.baidu.com 时, 就会把 HTTP 请求先发给 抓包工具抓包工具 再把请求转发给 百度 的服务器。当 百度 服务器返回数据时抓包工具 拿到返回数据再把数据交给浏览器。因此 抓包工具 对于浏览器和 百度 服务器之间交互的数据细节都是非常清楚的。 HTTP 请求 抓包结果 注解 首行: [方法] [url] [版本]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔空行: 遇到空行表示Header部分结束Body: 空行后面的内容都是Body。Body允许为空字符串如果Body存在则在Header中会有一个Content-Length属性来标识Body的长度 HTTP 响应 抓包结果 注解 首行: [版本号] [状态码] [状态码解释]Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔空行: 遇到空行表示Header部分结束Body: 空行后面的内容都是Body。Body允许为空字符串如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度 HTTP 协议格式总结 空行的作用 HTTP 协议并没有规定报头部分的键值对有多少个空行就相当于是 “报头的结束标记”或者是 “报头和正文之间的分隔符”。 三、HTTP 请求详解 1、首行 1请求方法 请求方法描述GET从服务器获取资源POST向指定服务器资源提交数据进行处理请求例如提交表单或上传文件。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。HEAD类似于 GET 请求只不过返回的响应中没有具体的内容用于获取报头。PUT从客户端向服务器传送的数据取代指定的文档的内容。DELETE请求服务器删除指定的页面。CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS允许客户端查看服务器的性能。TRACE回显服务器收到的请求主要用于测试或诊断。PATCH是对 PUT 方法的补充用来对已知资源进行局部更新。 HTTP的请求方法描述了这个HTTP请求想干什么。HTTP协议有很多的请求方法不同的方法表示不同的语义。其中 GET 方法表示从服务器获取资源和 POST 方法表示向服务器提交数据资源登录、上传文件等场景下是常用到的方法而 GET 又是最常用的方法至于其他方法我们很少会用得上。 因此有这样一句话天下HTTP请求分十斗GET请求独占八斗POST请求占一斗其他方法请求共占一斗。 GET 和 POST 的区别 虽然 GET 和 POST 表示不同语义但实际上 HTTP 的语义只是一种建议在实际使用的时候不一定非要遵守。因此 GET 和 POST 没有本质上的区别使用GET的场景替换换成POST也没有问题使用POST的场景替换成GET也可以。但是二者在使用习惯上存在区别 使用 GET 请求传参到后台时传递的参数则显示在地址栏安全性低且参数的长度也有限制2048字符POST 请求则是将传递的参数放在 request body 中不会在地址栏显示安全性比 GET 请求高且参数没有长度限制。重要区别GET习惯上用来表示 获取数据POST 用来表示提交数据。GET一般没有 body需要携带的数据通常放到URL中POST一般有 body将需要携带的数据放到 body 中。GET请求可以被浏览器收藏POST请求不可以。当我们收藏一个链接时浏览器会记录该链接的 URLGET 请求可以被浏览器收藏因为请求参数包含在 URL 中而 POST 请求不能被浏览器直接收藏因为请求数据位于请求体中无法完整保存在收藏夹中GET请求通常设计出幂等的POST 请求一般是不幂等的。如果多次请求得到的结果一样, 就视为请 求是幂等的承接上述幂等性的前提下GET 可以被缓存POST 不能被缓存。 2URL URLUniform Resource Locator是统一资源定位符的缩写。它是用于标识和定位互联网上的资源如网页、图像、视频等的字符串格式。 例如 https://cn.bing.com/videos/search?qabcdeformZ9LH1协议常见的有 http 和 https也有其他的类型。(例如访问 mysql 时用的jdbc:mysql )登陆信息认证现在的网站进行身份认证一般不再通过 URL 进行了一般都会省略服务器地址此处是一个 “域名”域名会通过 DNS 系统解析成一个具体的 IP 地址通过 ping 命令可以看到域名真实 IP 地址 端口号可选指定了与服务器建立连接时要使用的端口。当端口号省略的时候浏览器会根据协议类型自动决定使用哪个端口。例如 http 协议默认使用 80 端口https 协议默认使用 443 端口带层次的文件路径表示要访问的资源在服务器上的路径或文件信息查询字符串(query string)可选对请求资源进行细节上的补充。本质是一个键值对结构键值对之间使用 分隔键和值之间使用 分隔片段标识可选片段标识主要用于页面内跳转 3 版本号 在HTTP协议的首行中还包含另一个字段叫做“版本号”。 版本号是指明正在使用的HTTP协议版本的一部分。常见的HTTP协议版本包括 HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3 等。它用于指示客户端和服务器之间所使用的协议版本以确保双方能够正确解析和处理请求或响应。当前最主流的的版本是 HTTP/1.1 绝大部分互联网上的网站用的都是 HTTP/1.1 版本。 2、请求报头 Header 通过观察上面的抓包情况可以看到请求头是由键值对组成的。Header中的键值对大多都是HTTP协议规定的当然也可以添加自定义键值对这也是HTTP定制性强的体现。对于报头中的每一个键值结构都有自己的含义下面介绍几种比较常见的键值结构 1Host表示服务器主机的地址和端口。 大多数情况下Host中的值和URL中的域名是一致的。那么为什么还要存在这样一个键值结构呢这就要谈到不一样的情况了当我们访问服务器不是直接访问而是通过代理访问此时的Host和URL中的域名就不一样了。 2Content-Length表示 body 中的数据长度字节。 Content-Length依赖于Body如果一个请求没有BodyHeader中就没有这个属性。 3Content-Type表示请求的 body 中的数据格式。 Content-Type 同样依赖于 Body如果一个请求没有BodyHeader 中就没有这个属性。 作为请求Content-Type 使用最多的是下面 两种 格式 1、Content-Type: application/json;charsetUTF-8 这里表示数据是按照json格式组织的并指定里数据的字符集为UTF-8 此时的body格式形如 {username:xxxxx,password:xxxxxxxx,uuid:xxxxxxxxx,status:0}2、Content-Type: application/x-www-form-urlencoded;charsetUTF-8 这里表示数据是按照表单提交的数据格式组织的并指定里数据的字符集为UTF-8 此时的body格式和 query string 格式相同形如 usernametzpasswordxxxxxxxuuidxxxxxxxstatus04User-Agent (简称 UA)表示浏览器/操作系统的属性 下面是我使用本机访问百度时的UA 早期由于同一时期的浏览器种类繁多功能参差不齐UA可以在请求中告诉服务器当前的客户端种类服务器可以根据客户端种类推送不同的页面。随着时间的推移浏览器之间的差异越来越小UA存在的价值也就大打折扣了。虽然它还可以用来区分用户使用的是手机、平板还是PC但是“响应式布局”相比之下是一种更好的方案。 5Referer表示这个页面是从哪个页面跳转过来的。 下面是我在百度主页访问百度贴吧时的抓包情况 注意 如果直接在浏览器中输入URL或者直接通过收藏夹访问页面时是没有 Referer 的。属于直接访问没有经过跳转 6Cookie 机制重点 上面是一段 Cookie 信息虽然看起来“有亿点”扎眼但也可以看的出 Cookie 也是由键值对组成键和值之间使用 分割键值对之间使用;分割。至于这里的键值对都是程序眼自定义的数据不同的网站有不同的键值对也就有不同的含义和用途。 Cookie机制是浏览器在本地存储用户自定义数据的一种关键机制。 浏览器自身也是要存储一些数据的比如最典型的就是用户的身份信息。但是为了保证用户的上网安全浏览器会禁止网页能够直接访问硬盘。因此引出了Cookie机制允许网页通过浏览器提供的 API 写入特定的文件中。 每个网站都存有自己的CookieCookie是按照域名为维度进行存储的通常同一个网站的主页、结果页、等子页面共享同一份Cookie。不同的网站则是各自享有各自的Cookie。 Cookie从哪里来 Cookie从服务器来。当用户首次访问一个网站时网站的服务器会在响应中包含一个Set-Cookie头部该头部包含了一条或多条Cookie信息。浏览器接收到这些Cookie信息后会使用Cookie机制将其保存在用户的计算机或移动设备上。 Cookie到哪里去 Cookie在浏览器只是暂存真正发挥作用得由服务器来使用。当用户在浏览器中发起新的请求访问同一网站时浏览器会自动将该网站关联的Cookie信息添加到请求的Cookie头部中并发送给服务器。这样服务器就能够根据Cookie中的信息对用户进行个性化处理。 Cookie有什么用 Cookie是本地浏览器存储数据的机制。最典型的应用就是存储当前用户登录的身份标识也称为令牌token。当然它存储的也不一定是身份标识信息可以存储任何字符串数据。Cookie存储空间有限一般只有几k所以不会存储较大的数据 3、正文Body 正文中的内容格式和 header 中的 Content-Type 密切相关这里就不过多赘述了大家可以多抓包熟悉一下。 三、HTTP响应详解 对于HTTP响应来说它的报文格式的绝大多数属性都和HTTP请求相同下面我就秉承着“求同存异”的原则向大家介绍 1、状态码与状态码描述 状态码表示访问一个页面的结果。由三位数字组成分为不同的类别每个类别有特定的含义。 状态码描述是对状态码的文字描述用于更直观地说明该状态码所表示的含义。 但是对于HTTP提供的状态码种类是非常繁多的我们这里不可能一一介绍下面是几个常见的状态码及描述 状态码描述含义200OK请求成功404Not Found要访问的资源不存在403Forbidden访问被拒绝没有权限500Internal Server Error服务器内部错误504Gateway Timeout服务器访问超时服务器迟迟未响应301Moved Permanently临时重定向302Moved Temporarily (Found)永久重定向 关于重定向 重定向就是访问旧的地址被自动引导到新的地址上。 虽然HTTP提供的状态码繁多但我们可以根据状态码共性进行划分 状态码类别含义1XXInformational接收的请求正在处理2XXSuccess请求正常处理完毕3XXRedirection需要进行附加操作以完成请求4XXClient Error服务器无法处理请求5XXServer Error服务器处理请求出错 2、怎样构造HTTP请求 这里介绍 五种 常用的HTTP请求构造方式 1直接在浏览器地址栏输入URL构造出一个GET请求。 2HTML中的一些特殊标签也会触发GET请求。例如link、script、img、a 3使用 form表单 可以触发GET和POST请求。 action: 构造的 HTTP 请求的 URL 是什么.method: 构造的 HTTP 请求的 方法 是 GET 还是 POST (form 只支持 GET 和 POST) 4使用AJAX可以构造任意HTTP请求。 AJAX 全称 Asynchronous JavaScript and XML 是一种用于在网页上进行异步数据交互的技术也是目前最主流的前后端交互方式。 关于同步和异步我们可以这样理解同步就是请求的发起者亲自拿到请求的结果异步就是请求的发起者并不关心结果当被请求的这一方计算出结果后把结果推送给发起者。所以此时理解同步和异步关键是看结果是自己取还是别人送。 使用AJAX构造HTTP请求 由于 JS 提供的原生 AJAX API 很难用这里我们使用 jQuery 中提供的 AJAX API 进行操作 $.ajax({url:https://www.baidu.com,// http请求中的urltype:post,// 请求的方法还可以是get、put、delete等contentType:text/plain,// body的数据类型可以是application/json等// 这是一个处理响应的回调函数success: function(body) {// 处理响应的代码console.log(body);}});上述过程中的回调函数会在服务器返回一个正确的响应的时候自动执行这个过程就是“异步”的。 具体来说在页面的JS中把请求发送出去后就可以继续执行后续的代码了直到正确的响应回来之后浏览器会把这个响应给success回调函数执行并处理响应的逻辑。 相比之下ajax的功能更加丰富但是也存在一个非常重要的问题——跨域问题。 如果我们直接在本地执行上述代码浏览器会报错 虽然报错了但这并不是代码的bug而是浏览器引入的一种保护机制为了防止a网站的页面请求b网站的数据。 此时运行的AJAX代码运行的页面的域名是null因为是本地的HTML文件请求的目标域名是www.baidu.com当前二者域名不同即使服务器返回响应浏览器还是不能处理。 5使用现成工具构造HTTP请求如Postman。 这种现成的工具有很多大家可以根据自己的口味自行选择这里就不在过多介绍了。
http://www.yayakq.cn/news/3458/

相关文章:

  • 免费域名怎么做网站做饼的网站
  • 建网站可以铺货wordpress大学模板
  • 上海专业网站建设服响应式布局实现
  • 提供龙岗网站建设新网站怎么做seo
  • 网站开发需要会什么python网页游戏开发
  • 做设计找图有哪些网站用什么搭建个人网站
  • 淘客手机版网站怎么做网站运营是做什么的
  • 建网站权威公司物流网站给做软件
  • 网站开发商城酒类网站该怎么做
  • 网站平台建设成本网络有哪些广告推广方式
  • 视频网站怎么做外链网络舆情应对措施
  • 网站实时推送怎么做wordpress 后台登录慢
  • 500亿网站建设wordpress 买主题
  • 长清网站建设电话海南城乡建设庁网站
  • 国外网站做acm题目比较好陕西响应式网站建设公司
  • 有没有专门找装修公司的网站中国搜索提交网站
  • 广东恒力建设工程有限公司网站互联网产品推广案例范文
  • 网站后台程序开发wordpress语言插件qx
  • 合肥网站建设设计公司江苏国泰做的网站案例
  • 改行做网站怎样用8uftp做网站
  • 如何编程制作自己的网站一个小胖子从网站做任务的网站故事
  • 大潮建设集团有限公司 网站北京网页设计公司兴田德润怎么样
  • 云南热搜科技做网站不给源码dz论坛seo
  • 承德优化网站建设wordpress能生成静态文件下载
  • 国内阿里巴巴网站怎么做西宁做网站君博先进
  • 做网站UI说不会写文案wordpress 删除修订版本
  • 企业营销型网站建设荆门做网站公司
  • 自建站模板网站行业
  • 自己的网站怎么做seo阿里云上的网站空间好用吗
  • 专业的家居行业网站模板网站建设百度小程序