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

HTTP协议(一)

HTTP协议(一)

  1. 什么是HTTP协议
  • 客户端连上web服务器后,如果想要获得web服务器中的某个web资源,需要遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器之间通讯的格式;
  • 基于TCP连接的传输协议;
  • 默认端口是80;
  • 基于请求响应模式的协议。
  1. 计算机网络基本知识
  • 协议:两台计算机通讯时对传送信息内容的理解、信息表示形式以及各种情况下应答信号都必须遵守的共同的约定。
  • 体系结构:在一个计算机网络中将协议分成了若干层次,将协议按如何分层以及各层中具体采用协议的集合。
  • OSI体系结构:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • TCP/IP体系结构:网络接口层、网际层、运输层、应用层。
  1. HTTP1.0和HTTP1.1的区别
  • 在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源;
  • 在HTTP1.1协议中,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。
  1. HTTP请求
  • 请求行用于描述客户端的请求方式、请求的资源名称以及使用的HTTP协议版本号;
  • 请求头用于描述客户端请求那台机器,以及客户端的一些环境信息等;
  • 一个空行。
GET /books/java.html HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer: http://localhost/links.asp
User-Agent: Mozilla/4.0
Accept-Encoding: gzip, deflate
  1. 请求行
  • 请求方式有POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT。默认情况下浏览器向服务器发送的都是GET请求。

  • GET请求在URL地址后附带的参数是有限制的,数据容量通常不超过1K;

  • POST请求传送的数据量无限制。

  • HTTP常用请求头:

Accept: text/html,image/*	--支持数据类型
Accept-Charset: ISO-8859-1	--字符集
Accept-Encoding: gzip		--支持压缩
Accept-Language:zh-cn 		--语言环境
Host: localhost:80		--访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --缓存时间
Referer: http://localhost/index.jsp	 --来自哪个页面、防盗链
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie --使用的cookie
Connection: close/Keep-Alive   	--链接状态
Date: Tue, 11 Jul 2022 18:23:51 GMT	--时间
  1. HTTP响应
  • 一个HTTP响应代表服务器向客户端回送的数据。包括一个状态行、若干个响应头以及实体内容。

  • 状态行用于描述服务器对请求的处理结果。

  • 响应头用于描述服务器的基本信息,以及数据的描述。

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Cache-control: private<HTML>
<BODY>
......
  • 状态行格式:HTTP版本号 状态码 原因描述<CRLF>
状态码含义
1xx指示信息–表示请求已接收,继续处理
2xx成功–表示请求已被成功接收、理解、接受。200客户端请求成功
3xx重定向–要完成请求必须进行更进一步的操作
4xx客户端错误–请求有语法错误或请求无法实现。401请求未授权,403请求已收到但是拒绝提供服务,404请求资源不存在
5xx服务器端错误–服务器未能实现合法的请求。500服务器内部错误,503服务器不可用
  • 常用响应头
Location: http://localhost/index.jsp 	--跳转方向
Server:apache tomcat			--服务器型号
Content-Encoding: gzip 			--数据压缩
Content-Length: 80 			--数据长度
Content-Language: zh-cn 		--语言环境
Content-Type: text/html; charset=GB2312 		--编码
Last-Modified: Tue, 11 Jul 2022 18:23:51 GMT	--最后修改时间
Refresh: 1;url=http://localhost		--定时刷新
Content-Disposition: attachment; filename=aaa.zip	--下载
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
Expires: -1					--缓存
Cache-Control: no-cache  			--缓存
Pragma: no-cache   				--缓存
Connection: close/Keep-Alive   			--连接
Date: Tue, 11 Jul 2022 18:23:51 GMT		--时间
  1. 响应示例
public void test(HttpServeltRequest req, HttpServletResponse resp) {//服务器通知浏览器跳转地址resp.setHeader("location", "http://localhost:8080/1.html");resp.setStatus(302);//Content-Type服务器通知浏览器,服务器发送数据的编码resp.setHeader("Content-Type", "text/html;charset=GB2312");resp.getWriter().write("测试");if (num >0) {resp.getWriter().print(num--);resp.setHeader("refresh", "1");} else resp.setHeader("refresh","0;url=http://localhost:8080/day4/2.html");//Content-Type服务器通知浏览器,刷新时间及url//response.setHeader("refresh", "2");}//通知浏览器数据格式为压缩格式resp.setHeader("Content-Encoding", "gzip");//测试数据:构建数据后压缩,再发送给浏览器StringBuilder builder = new StringBuilder();for (int i=0;i<100000;i++) builder.append("ab");ByteArrayOutputStream bos = new ByteArrayOutputStream();GZIPOutputStream gzip = new GZIPOutputStream(bos);gzip.write(builder.toString().getBytes());gzip.close();byte[] resData = bos.toByteArray();resp.getOutputStream().write(resData);//下载resp.setHeader("Content-Disposition", "attachment;filename=a.jpg");InputStream is = this.getServletContext().getResourceAsStream("/1.jpg");OutputStream out = resp.getOutputStream();byte[] b = new byte[1024];int len = -1;while((len=in.read()) > -1) {out.write(b, 0, len);}out.close();is.close();
}

相关文章:

HTTP协议(一)

HTTP协议&#xff08;一&#xff09; 什么是HTTP协议 客户端连上web服务器后&#xff0c;如果想要获得web服务器中的某个web资源&#xff0c;需要遵守一定的通讯格式&#xff0c;HTTP协议用于定义客户端与web服务器之间通讯的格式&#xff1b;基于TCP连接的传输协议&#xff…...

计算神经网络参数量Params、计算量FLOPs(亲测有效的3种方法)

1.stat&#xff08;cpu统计&#xff09; pip install torchstat from torchstat import statstat(model, (3, 32, 32)) #统计模型的参数量和FLOPs&#xff0c;&#xff08;3,32,32&#xff09;是输入图像的size 结果&#xff1a; 问题&#xff1a;当网络中有自定义参数时&am…...

sizeof与一维数组和二维数组

&#x1f355;博客主页&#xff1a;️自信不孤单 &#x1f36c;文章专栏&#xff1a;C语言 &#x1f35a;代码仓库&#xff1a;破浪晓梦 &#x1f36d;欢迎关注&#xff1a;欢迎大家点赞收藏关注 sizeof与一维数组和二维数组 文章目录sizeof与一维数组和二维数组前言1. sizeof与…...

Spark UI

Spark UIExecutorsEnvironmentStorageSQLExchangeSortAggregateJobsStagesStage DAGEvent TimelineTask MetricsSummary MetricsTasks展示 Spark UI &#xff0c;需要设置配置项并启动 History Server # SPARK_HOME表示Spark安装目录 ${SPAK_HOME}/sbin/start-history-server…...

windows应用(vc++2022)MFC基础到实战(2)

目录向导和资源编辑器使用 MFC 应用程序向导创建 MFC 应用程序使用类视图管理类和 Windows 消息使用资源编辑器创建和编辑资源生成 MFC 应用程序的操作1.创建一个主干应用程序。2.了解即使在不添加你自己的任何一行代码的情况下&#xff0c;框架和 MFC 应用程序向导也能提供的内…...

记一次反射型XSS

记一次反射型XSS1.反射型XSS1.1.前言1.2.测试过程1.3.实战演示1.3.1.输入框1.3.2.插入代码1.3.3.跳转链接2.总结1.反射型XSS 1.1.前言 关于这个反射型XSS&#xff0c;利用的方式除了钓鱼&#xff0c;可能更多的就是自娱自乐&#xff0c;那都说是自娱自乐了&#xff0c;并且对系…...

BUUCTF-[羊城杯 2020]Bytecode

题目下载&#xff1a;下载 这道题是一个关于python字节码的。 补充一下相关知识&#xff1a;https://shliang.blog.csdn.net/article/details/119676978dis --- Python 字节码反汇编器 — Python 3.7.13 文档 手工还原参考:[原创]死磕python字节码-手工还原python源码-软件逆…...

《Uniapp入门指南:从安装到打包的全流程》

Uniapp是一款基于Vue.js的跨平台开发框架&#xff0c;可以快速构建出同时支持多个移动端平台和Web端的应用程序。本文将介绍Uniapp的基础知识和开发流程&#xff0c;帮助读者快速入门Uniapp开发。一、Uniapp的基础知识1.Uniapp的优势Uniapp的最大优势是可以快速开发同时支持多个…...

机器学习算法集成系统

版权所有:CSDN——川川菜鸟 本系统并不作为本专栏要求,这一篇自愿学习。 文章目录 本系统设计背景设计思路完整代码本系统设计背景 随着人工智能技术的不断发展,机器学习成为了人工智能领域的重要组成部分。机器学习算法能够从大量数据中发现模式、规律,并利用这些规律对新…...

scratch绘制雷达 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月

目录 scratch绘制雷达 一、题目要求 1、准备工作 2、功能实现 二、案例分析...

VRRP主备备份

1、VRRP专业术语 VRRP备份组框架图如图14-1所示: 图14-1:VRRP备份组框架图 VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如SwitchA和SwitchB。虚拟路由器(Virtual Router):又称VRR…...

【软件逆向】软件破解?病毒木马?游戏外挂?

文章目录课前闲聊认识CTF什么是CTFCTF解题模式什么是逆向定义应用领域CTF中的逆向现状推荐书籍学习要点逆向工程学习基础常规逆向流程阶段一:信息收集阶段二:过保护后静态调试阶段三:结合动态调试阶段四:写解题脚本逆向例题概览1-控制台程序解题过程2-Crackme3-游戏4-移动安全C…...

curl请求常用参数和返回码

curl是一个用于传输数据的工具&#xff0c;支持各种协议&#xff0c;如HTTP、FTP、SMTP等。以下是一些常用的curl请求参数及其作用&#xff1a; -X, --request&#xff1a;指定HTTP请求方法&#xff0c;常见的有GET、POST、PUT、DELETE等。 -H, --header&#xff1a;设置HTTP请…...

【STM32】进阶(一):抢占式优先级和响应式优先级(NVIC_PriorityGroupConfig)

1、简介 STM32(Cortex-M3)中每个中断源都有两级优先级&#xff1a;抢占式优先级&#xff08;pre-emption priority&#xff09;和子优先级&#xff08;subpriority&#xff09;&#xff0c;子优先级也叫响应式优先级。 1.1 抢占式优先级 望文知义&#xff0c;就是优先级高的…...

LogCompilation后JIT输出文件格式解析

https://wiki.openjdk.org/display/HotSpot/LogCompilationoverview https://spotcodereviews.com/articles/optimization/2020/12/23/why-does-the-jit-continually-recompile-the-same-method.html task_queued count表示总共执行次数&#xff0c;iicount表示解释器执行次数…...

Linux学习第二十四节-Podman容器

一、容器的概念 容器是由一个或多个与系统其余部分隔离的进程组成的集合。我们可以理解为“集装箱”。 集装箱是打包和装运货物的标准方式。它作为一个箱子进行标记、装载、卸载&#xff0c;以及从一个 位置运输到另一个位置。该容器的内容与其他容器的内容隔离&#xff0c…...

基于quartz实现定时任务管理系统

基于quartz实现定时任务管理系统 背景 说起定时任务框架&#xff0c;首先想到的是Quartz。这是定时任务的老牌框架了&#xff0c;它的优缺点都很明显。借助PowerJob 的readme文档的内容简单带过一下这部分。 除了上面提到&#xff0c;还有elastic-job-lite、quartzui也是相当…...

vue-element-admin:基于element-ui 的一套后台管理系统集成方案

文章目录一、vue-element-admin1、vue-element-admin1.1简介1.2安装2、vue-admin-template2.1简介2.2安装一、vue-element-admin 1、vue-element-admin 1.1简介 vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 GitHub地址&#xff1a;https://github.com…...

KVM-7、KVM 虚拟机创建的几种方式

通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式: (1)通过 qemu-kvm 创建 (2)通过 virt-install 创建 (3)通过 virt-manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看…...

Hadoop三大框架之HDFS

一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;需要一种系统来管理多台机器上的文件&#xff0c;这就是分布式文件…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...