HTTP请求和响应(补充HTTP协议)
创始人
2024-04-18 04:17:18
0

1.HTTP请求

1.1.HTTP请求中 header 的常见的键值对说明

  • HOST: 域名(IP+端口)
  • Content-Length: body中的数据长度
  • Content-Type: body中的数据格式
  • User-Agent: 用户使用什么东西来上网.(操作系统信息+浏览器信息)
    • 通过这些信息,服务端就可以"区别对待"了.
    • 服务端可以针对信息返回相应的数据
  • Referer: 表示当前页面是从哪个页面跳转过来的.
  • Cookie: 浏览器给页面提供的一种能够持久化存储数据的机制.
    • 持久化指,不会因为程序重启而丢失,写到磁盘里.

1.1.1.Content-Length 的使用

  • 如果当前有若干个GET 请求,到了 TCP 接收缓冲区中了
    • 应用程序读取请求的时候,就以空行为分隔符.
  • 如果当前是有若干个POST 请求,到了TCP 缓冲区了
    • 这个时候.空行后面还有body, 这个时候 Content-Length 就起到作用了.
    • 当应用程序读到空行之后,就需要按照 Content-Length 表明的长度,继续读若干长度的数据.

1.2.请求正文

正文中的内容格式和 header 中的 Content-Type 密切相关.

常见的请求正文格式.

  • application/x-www-form-urlencoded
  • multipart/form-data
  • application/json

2.HTTP响应

HTTP响应中很多地方都是和HTTP请求类似的.

2.1.HTTP响应中的状态码

响应状态码状态码描述状态码解释
200OK表示浏览器很顺利的就获取到了想要的内容,没有什么差错.
404Not Found表示浏览器要访问的资源不存在.
403Forbidden表示要访问的资源是存在的,但是用户没有权限访问.
405Method Not Allowed浏览器访问使用的方法,在对方服务器中不支持.
500Internal Server Error服务器出问题了,意味着处bug了.
504Gateway Timeout服务器繁忙
302Move temporarily重定向(服务器返回一个新的地址,浏览器重新访问新的网址)

302 (重定向) 数据报的 header 中就会有一个 Location: 新地址 ,表示要跳转到的地址.因为是重定向数据报,所以这个键值对(Location: 新地址)一般只出现在响应报文中.

2.1.1.状态码分类

  • 2开头,都属于成功
  • 3开头,都属于重定向
  • 4开头,都属于客户端出现错误
  • 5开头,都属于服务器出现错误
  • 特别的状态码:418->是一个彩蛋状态码.

2.2.响应报头(header) 和 响应正文(body)

响应报头(header) 和 响应正文(body) 和请求报头和请求正文是类似的.

3.关于登录

  • 为啥登录,建议使用POST 实现? 使用GET 能不能实现登录呢??
  • 使用GET是完全可以实现登录功能的.为啥还主要使用POST?
    • 因为登录肯定是要给服务器传递用户名和密码
    • 如果使用 GET. 用户名密码习惯上就会放到URL的query string中来传递
      • 此时浏览器的地址栏里的路径,就可能变的很长一串.用户体验就不是很好.
      • 并且如果密码是明文传输.就会直接在地址栏显示密码.同样,用户体验也不是很好.
    • 而POST是放在body中的,相对来说用户使用就比较舒服.
      • 不会在地址栏中展示过多内容.

4.关于 Cookie

浏览器为了安全,默认情况下是不能让页面的js随意访问到用户电脑上的文件系统的.

  • 因为如果某个网页上包含恶意代码.用户不小心点了一下, 就可能触发这个恶意代码, 把用户电脑上的“学习资料"全给删了!

但是这样的安全限制,也给浏览器交互带来了一些麻烦.

  • 有时候,确实又需要让页面这里持久化存储一些数据, 方便后续访问网站.
  • 其中最典型的,就是需要存储用户当前的身份信息.

4.1.由于上述原因,于是就产生了 Cookie 的机制

当用户在登录页面完成身份认证之后, 此时服务器就会给浏览器返回一个用户的身份信息, 浏览器把这个信息就保存到了一个特定的位置上, 后续再访问同一个网站的其他页面的时候, 浏览器会自动的带上这个身份信息. 服务器就能识别了.

  • 当前的浏览器就是采取这样的策略.
  • 虽然不能让页面的js访问用户的整个磁盘数据. 但是可以单独给浏览器分配一个小黑屋.
  • js 代码就可以在这个小黑屋里随便折腾.这里的折腾, 代码不能出小黑屋, 就不会影响到用户磁盘上的其他的学习资料.
  • 这里的小黑屋, 有多种不同的形式.
    • 其中Cookie是一个比较古老,也比较经典的形式.

4.2.Cookie 具体的组织形式

  1. 先按照域名来组织, 针对每个域名, 分别分配一个小房间(小黑屋).
    • 比如浏览器访问搜狗,就会进入搜狗这个域名记录的cookie.
    • 浏览器访问其他网页,又会进入到对应的cookie.
  2. 一个小房间里,又会按照键值对的方式来组织数据.
    • Cookie数据的来源:服务端返回给客户端的.

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...