HTTP协议是什么?有什么作用?

2023-11-07

HTTP协议(Hyper Text Transfer Protocol,HTTP,全称为“超文本传输协议”)是客户端浏览器或者是其他的程序和Web服务器之间的应用层通信协议。它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

  • HTTP 协议用于客户端和服务器端之间的通信

  • http协议是一种用来从WWW服务器传输超文本到本地浏览器的传送协议。

  • http协议能够使得浏览器更加的高效,使得网络传输减少。

  • http协议可以保证计算机正确快速的传输超文本文档,除此之外,还能够确定传输文档当中的哪一部分,以及哪部分内容首先显示等等。

Web 页面当然不能凭空显示出来。根据 Web 浏览器地址栏中指定的URL,Web 浏览器从 Web服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。

像这种通过发送请求获取服务器资源的 Web 浏览器等,都可称为客户端(client)。

当我们访问一个网站的时候,可能涉及不止一次HTTP请求/响应的交互过程。

Q:http在osi七层模型中的哪一层? http在osi七层模型中的那一层除了http协议还有哪些协议?

A:http协议是属于osi七层模型中的应用层通信协议;应用层除了有http协议还有DNS协议(域名系统)、FTP协议(文件传输)、SMTP协议(电子邮件)Telnet协议(远程登录系统)、POP3协议(邮件读取协议)等

https和http的区别

  1. HTTP的连接很简单,明文传输,通过80端口连接

  1. HTTPS是由SSL+HTTP构建的可进行身份认证、加密传输的协议,相对更安全,通过443端口连接。

  1. HTTPS需要到证书颁发机构申请证书(SSL的专业证书需要购买,功能越是强大的证书费用越高。)

http报文分类

HTTP报文格式有两种类型,分别为请求报文和响应报文。请求报文是客户端发送给服务器端的,而响应报文是服务器端发送给客户端的。

请求报文

user-agent:该代理类型的对象版本

connection:Close 不使用持久连接

Accept-language:zh-cn 中文版本

请求报文的几种类型:

  1. GET:客户端向服务器端请求资源,(获得指定URL的数据)

  1. POST:把客户端的信息传送给服务器端(请求服务器接收URI指定文档作为可执行的信息)

  1. HEAD:服务器收到请求时,用HTTP报文进行响应,但不返回请求对象,主要用在通信的控制操作领域(仅获取文档首部)

  1. PUT:文件在实体主体中被上载到URL字段指定的路径(请求服务器保存客户端传送的数据到URI指定文档)

  1. DELETE:请求服务器删除URI指定页面

  1. TRACE:请求消息返回客户端

Get和Post的请求方法的区别

  1. get请求一般常见是获取数据(也可以提交);post一般则是提交数据

  1. get请求可以被缓存,但post请求则不会被缓存

  1. get请求在浏览器刷新或者回退的时候是无害的;post的话数据会被重新提交

  1. get请求只能进行URL编码(appliacation-x-www-form-urlencoded),post请求支持多种(multipart/form-data等)

  1. get请求会被保存在浏览器历史记录中也可以被收藏为标签,因为参数就在URL中;但post都不行

  1. get因为放在URL参数中,所有隐私性,安全性较差,请求的数据长度也是有限制的,不同浏览器和服务器不同,一般长度是在2-8k之间,也常见的是1k以内;但post请求没有数据长度限制,因为post通过request body传递参数,请求数据则是放在body中。

  1. get和post都是http请求方式, 底层都是 tcp/IP协议;通常get 产生一个 tcp 数据包;post产生两个 tcp 数据包(但firefox是发送一个数据包);也就是说对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 OK(返回数据)。

响应报文

响应报文的结构:

  1. 状态行:版本、状态编码、短语

  1. 响应头主体:

  • 服务器类型或者是Web服务器版本

  • data就是时间

  • 类型

  • 不使用持久连接

  • 长度

  1. 回车换行

  1. 响应体(真正的数据)

响应报文的状态码

状态码是非常有用的一种参数,它向客户端传递了响应刚才HTTP请求报文的一些控制信息。

常见的状态码:
200-OK-服务器成功返回网页
404-Not Found-请求的网页不存在
503-Service Unavailable-服务器出错的返回状态
100-继续-请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分
101-切换协议-请求者已要求服务器切换协议,服务器已确认并准备切换
2xx 肯定应答
3xx 重定向请求
301-永久移动-针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择
302- 重定向-例如访问百度 结果跳转去京东
4xx 客户端请求内容出现错误
400-错误请求-服务器不理解请求的语法
403-禁止-服务器拒绝请求

什么是URL,URL由什么组成?

URL定义

在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),它是WWW的统一资源定位标志,就是指网络地址。URL正是使用 Web 浏览器等

访问 Web 页面时需要输入的网页地址

简单来说就是打开浏览器,地址栏上显示的网址,例如:

URL组成

一个完整的URL的组成由于:通信协议(scheme)主机(host)端口号(port)路径(path)、查询(query)信息片段(fragment)组成。

  1. scheme:通讯协议常用的通信协议http、ftp等

  1. host:主机、服务器(计算机)域名系统(DNS),主机名或IP地址

  1. port:端口号,整数,可选,省略时是默认端口,如http的默认端口是80

  1. path:路径,由零或多个‘/’隔开的字符串,一般用来表示主机上的一个目录或者文件地址

  1. query:查询,可选,用于给动态网页传递参数,可有多个参数,用‘&’号隔开,每个参数的名和值用‘=’号隔开。如:name=xzc

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议是什么?有什么作用? 的相关文章

  • python中的编码检测库[重复]

    这个问题在这里已经有答案了 这在某种程度上与我的问题有关here https stackoverflow com questions 2305997 unicodedecodeerror problem with mechanize 我处理
  • 使用意图过滤器从 URL 打开 Android 应用程序不起作用

    我有一个 Android 应用程序 人们用它来替代网站 因此 当用户遇到网站的 URL 时 我想为他们提供在我的应用程序中而不是在浏览器中 打开 URL 的选项 换句话说 我希望出现弹出窗口 让他们在我的应用程序和浏览器 可能还有其他应用程
  • 如何给所有HttpClient请求方法添加参数?

    我正在编写一些使用 Apache 的 Java 代码HttpClient版本4 2 2使用 RESTful 第三方 API 该 API 具有利用 HTTP 的方法GET POST PUT and DELETE 需要注意的是 我使用的是 4
  • 如何将 POST 请求内容保存为 .NET 中的文件 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个客户端应用程序POST请求a
  • 当 REST 中的资源不支持操作时,HTTP 状态代码 404 或 501

    我有一个 REST 服务 根据正在查看的资源类型 我有某些可用的操作 So Resource1支持Operation1 and Operation2 eg Resource1 Operation1 Resource1 Operation2
  • Spring Security (3.2.5) HTTP POST 身份验证后不转发到原始请求

    我有一个示例 Spring MVC 应用程序 由 Spring security Spring 版本 4 0 1 RELEASE Spring security 3 2 5 RELEASE 保护 当我作为未经身份验证的用户发送 HTTP G
  • REST URL 结构建议

    我正在尝试为我正在开发的网站的愿望清单部分敲定一个宁静的网址结构 这是一个非常简单的模型 用户可以有许多愿望清单 每个愿望清单可以包含许多产品 目前我有明显的 CRUD URL 来操作愿望清单本身 GET account wishlists
  • HTTP实时音频流服务器

    作为概念验证 我需要创建一个 HTTP 服务器 该服务器在 GET 请求时应启动连续的非编码 非压缩音频数据流 WAV PCM16 我们假设音频数据是 4096 个随机生成的单声道音频样本块 采样率为 44 1kHz 我应该在 HTTP 响
  • 使用传输编码分块的 HTTP 响应中的最大块大小是多少?

    The w3 org RFC2616 http www w3 org Protocols rfc2616 rfc2616 sec3 html sec3 6 1似乎没有定义块的最大大小 但是如果没有最大块大小 则没有空间用于块扩展 必须有一个
  • $http.get 和 method:'GET' 之间的区别

    我正在使用 Spring Data REST 并有一个 MySQL DB 来管理我的数据 我使用 AngularJS 编写了第一页 并希望从数据库中获取数据 为了获取我的数据 我知道有两种不同的方式 http get http myURL
  • DefaultHttpClient GET 和 POST 命令 Java Android

    好的 这是我的应用程序 一个 Android 应用程序 允许我从移动应用程序 而不是从网站 将 CokeZone 代码提交到 CokeZone co uk 所以我编写了这部分代码来执行登录后命令 然后检查我是否登录后 问题是 发送 post
  • 从浏览器中删除cookie?

    有什么方法可以指示网络浏览器完全delete一个人的cookie是用PHP设置的吗 我不想expiry或者等待浏览器closed 对于删除 我的意思是实际上不再将其列在 cookie 列表中 尝试这样删除所有 cookie foreach
  • 在 Java Servlet 应用程序中设置 HTTP 201 响应的 Location 标头的正确方法是什么

    考虑以下代码向客户端发送 HTTP 201 已创建 响应 String url app things id 42 example response setStatus HttpServletResponse SC CREATED respo
  • 在 Heroku 上获取客户端的真实 IP 地址

    在任何 Heroku 堆栈上 我想获取客户端的 IP 我的第一次尝试可能是 request headers REMOTE ADDR 当然 这是行不通的 因为所有请求都是通过代理传递的 所以替代方法是使用 request headers X
  • Perl:LWP::UserAgent 对于重定向 URL 始终返回代码 200

    我有一个简单的 url 它执行 302 临时错误 移至另一页 我尝试在 URL 返回代码 200 表示 OK 时检索它 并在返回 200 以外的其他内容时停止 My code my ua LWP UserAgent gt new env p
  • 在处理程序之后访问 HTTP 请求上下文

    在我的日志记录中间件 链中的第一个 中 我需要访问一些在链下游的某些身份验证中间件中编写的上下文 并且仅在处理程序本身执行之后 旁注 需要首先调用日志记录中间件 因为我需要记录请求的持续时间 包括在中间件中花费的时间 此外 当权限不足时 身
  • Django 响应总是用 text/html 分块无法设置内容长度

    在我的Django应用程序的views py中 我在尝试设置以下HTTP标头字段后返回一个HttpResponse对象 Create a Response Object with the content to return response
  • 从 HTTP 登录到 HTTPS

    我的网站默认使用 HTTP 我确实有一个启用 HTTPS 的证书 但只有其上的某些区域强制建立安全连接 登录是通过 Ajax 处理的 我想开始使用 SSL 即使请求来自 HTTP 我尝试强制请求的地址具有 HTTPS 并且它完美地回复 然而
  • 编写每个处理程序中间件

    我希望从处理程序中提取一些重复的逻辑 并将其放入一些每个处理程序的中间件中 特别是 CSRF 检查 检查现有会话值 即身份验证或预览页面 等 我读了关于此的几篇文章 http justinas org writing http middle
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http

随机推荐

  • 一文读懂C++的if与else判断语句

    说个明白 先从最简单的说起 if语句 if语句是C 中最简单的判断语句 if S 语句1 语句2 如果S为真 非零 则执行语句1 否则执行语句2 如果语句1就是单个语句 则可以这么写 if S 语句1 这里的分号不能少 或者这么写 if S
  • DevExpress v15.2.4帮助文档下载(全)

    原文地址 http www devexpresscn com Resources Documentation 498 html DevExpress v15 2帮助文档下载列表大全来啦 包含 net系列所有帮助文档 提供CHM和PDF两个版
  • 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?

    展开全部 首先需要了解在实施过程中我们可能碰到哪些风险 按照一般意义 我们常常所说的风险分为两大e69da5e6ba903231313335323631343130323136353331333436316264类 一种是不可预知的 一种是
  • STM32CubeMX定时器输出比较模式——输出相位可调矩形波

    1 介绍 STM32的定时器通道输出矩形波 可以使用PWM模式和输出比较模式 PWM模式能够产生频率和占空比可调的矩形波信号 但不能对信号的相位进行调节 使用输出比较模式 可以实现信号的相位调节和频率调节 但不能对信号的占空比进行调节 输出
  • 100天精通Python(基础篇)——第30天:数据容器-list列表索引

    从前往后索引 name list 0 name list 123 666 print name list 0 print name list 1 print type name list 从后向前索引 name list 1 name li
  • 【数据结构与算法】1.树、二叉树、字典树、红黑树

    文章目录 简介 1 树 Tree 2 二叉树 Binary Tree 2 1 二叉树数据结构 2 2 二叉树的三种遍历方式 3 二叉查找树 Binary Search Tree 3 1 二叉查找树的概念和定义 3 2 二分查找算法 4 字典
  • 手动安装Python第三库vtk库

    我们在使用py进行可视化操作时大概率会用到vtk库 一般方法是通过pip 安装 但是这玩意得看人品 本人人品十分不好 哈哈哈哈 所以我们就要自己下载轮子手动安装 附上第三方库地址 https www lfd uci edu gohlke p
  • 真实!大概五分之一的年轻人存款在一万元以内。

    近日 有调查称 大概五分之一的年轻人存款在一万元以内 10万元存款是一个 坎 存款超过10万就会超过53 7 的人 年轻人 存款 两个词碰撞在一起 引来了广泛的关注和讨论 你认为年轻人存款难吗 可以从以下几个角度发表你的看法 角度一 你的目
  • 计算机应用问题,计算机应用的现状与发展的问题

    计算机应用的现状与发展的问题 来源 职称阁时间 2018 07 27 11 59热度 这篇论文主要介绍的是计算机应用的现状与发展的问题的相关内容 本文作者就是通过对计算机的应用现状等内容做出详细的阐述与介绍 特推荐这篇优秀的论文供相关人士参
  • 【C++设计模式】依赖倒转原则

    2023年8月30日 周三上午 目录 概述 含义 举个简单的例子 传统做法 使用依赖倒转原则 代码说明 再举一个具体的例子 以生活为例 概述 依赖倒转原则 Dependency Inversion Principle DIP 是面向对象设计
  • Hadoop 端口

    1 系统 8080 80 用于tomcat和apache的端口 22 ssh的端口 2 Web UI 用于访问和监控Hadoop系统运行状态 Daemon 缺省端口 配置参数 HDFS Namenode 50070 dfs http add
  • Shiro源码分析-----认证流程/授权流程----------Subject

    本文转载自 认证流程和授权流程 源码分析的第二篇以Subject的初始化为题 一 回顾Apache Shiro创建Subject的步骤如下 1 获取SecurityManager工厂 此处使用Ini配置文件初始化SecurityManage
  • csgo删除服务器地图在哪个文件夹,CSGO de_cache地图

    资源说明 CSGO de cache地图 由 Volcano 制作 需要的玩家不要错过哦 资源详情 Sal Volcano Garozzo发布了其最新制作的CS GO地图de cache Volcano制作的首个地图de nuke ve 相
  • Java请求合并与分而治之

    在系统设计的时候 你是否也遇到过这两个问题 1 大量请求造成数据库压力过大 2 大量数据库查询造成请求执行时间过长 本文将介绍在高并发 大数据环境下 以上两种问题的应对思路 一 请求合并 首先思考一个场景 在高并发的系统中 在每秒内有大量的
  • 全连接神经网络单层模型原理

    全连接神经网络单层模型原理 前言 单层MLP 1 前向传播 2 激活函数 2 1 Sigmoid函数 2 2 tanh函数 2 3 ReLu函数 2 4 Leaky ReLu函数 3 损失函数 4 梯度下降 前言 深度学习是学习样本数据的内
  • ​少儿机器人编程与三大主课关系

    说到机器人编程 在常规概念里 很难将其和三大主课联系到一起 回首过去 国家并不提倡未成年人去学专业技术含量较高的机器人编程教育的 格物斯坦提示 但随着现在老龄化的社会现象的出现 国家需要大批有志少年用高科技方式去改造社会 这就要精通机器人编
  • SpringBoot启动控制台的banner是怎么回事

    前言 每次启动SpringBoot项目时 总是能看到控制台打印了一串字符 隐约能辨认出是 Spring 不知大家是否也好奇过是怎么实现的 是直接打印固定的字符串 还是根据什么算法去生成的 于是闲暇无事 探究一番 只想修改banner可以跳到
  • 时间序列分解VMD和长短记忆神经网络lstm

    这篇记一下时间序列分解和长短记忆神经网络lstm如何一起用 vmd lstm 用python实现 首先预设的流程是 读取数据 vmd时间分解 把信号分解成5行 最大最小归一化 给模型设置参数 编译 fit函数 训练 反归一化 得到的五个信号
  • 内存的分区

    内存 物理内存 虚拟内存 物理内存 计算机真正的内存 虚拟内存 为了减缓物理内存的使用 将硬盘的一部份容量虚拟成虚拟成内存 程序员视野中看到的是虚拟地址 在32的操作系统内 每个进程的寻址范围是2 32 地址一般我们使用16进制表示 0x0
  • HTTP协议是什么?有什么作用?

    HTTP协议 Hyper Text Transfer Protocol HTTP 全称为 超文本传输协议 是客户端浏览器或者是其他的程序和Web服务器之间的应用层通信协议 它通常运行在TCP之上 它指定了客户端可能发送给服务器什么样的消息以