当前位置: 首页 > 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;这就是分布式文件…...

好好的系统,为什么要分库分表?

不急于上手实战 ShardingSphere 框架&#xff0c;先来复习下分库分表的基础概念&#xff0c;技术名词大多晦涩难懂&#xff0c;不要死记硬背理解最重要&#xff0c;当你捅破那层窗户纸&#xff0c;发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…...

多种调度模式下的光储电站经济性最优储能容量配置分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

二分法(适用于任何题型!!!)

今天看二分法看了一天&#xff0c;看吐了&#xff0c;现在讲讲怎么做类题。 只讲两种做法&#xff08;实则是可合并为一种&#xff09;&#xff0c;任何题型都可以转化为这种做法&#xff01;&#xff01;&#xff01;是任何&#xff01; 首先&#xff0c;设置 int left,righ…...

js常见的七种继承及实现

在 JavaScript 中&#xff0c;常见的继承方式有以下七种&#xff1a;大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库1. 原型链继承原型链继承是 JavaScript 中一种基于原型的继承方式&#…...

案例分析之——理由Mybatis动态SQL实现复用

无复用思想的做法&#xff1a; 在没有复用思想的时候&#xff0c;就只顾着实现功能。比如开发过程中涉及到两个表的更新功能&#xff0c;每需要更新一处&#xff0c;就写一个接口&#xff0c;结果出现了写了11个接口的情况。 这样虽然功能实现了&#xff0c;可是可能自…...

MCM 箱模型建模方法及大气 O3 来源解析实用干货

OBM 箱模型可用于模拟光化学污染的发生、演变过程&#xff0c;研究臭氧的生成机制和进行敏感性分析&#xff0c;探讨前体物的排放对光化学污染的影响。箱模型通常由化学机理、物理过程、初始条件、输入和输出模块构成&#xff0c;化学机理是其核心部分。MCM (Master Chemical M…...

【独家】华为OD机试 - 最长连续交替方波信号(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

代码随想录算法训练营第二十一天打卡 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先

打卡第21天&#xff0c;继续二叉树&#xff0c;前几天终于补完了&#xff0c;感觉难度上来了。 今日任务 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数 二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不…...

免费下载丨一看即会,Serverless 技术进阶必读百宝书

过去一年&#xff0c;全球正在加速推进云计算的 Serverless 化进程。Serverless 架构已经逐渐从“被接受”走向了“被学习”和“被应用”。云的产品体系正在 Serverless 化&#xff0c;从计算、存储、数据库到中间件&#xff0c;越来越多的云产品采用了 Serverless 模式。服务器…...

SQL语句的加锁方式 - Mysql 锁机制

SQL语句的加锁方式 - Mysql锁机制 SELECT ... FROM SELECT ... FOR UPDATE / SELECT ... FOR SHARED MODE SELECT ... LOCK IN SHARE MODE SELECT ... FOR UPDATE UPDATE ... WHERE ... DELETE FROM ... WHERE ... INSERT INSERT ... ON DUPLICATE KEY UPDATE REPLACE Mysql锁机…...

外贸网站seo教程/河南企业网站建设

Instr()函数 InStr()函数返回一个字符串第一次出现在一个字符串&#xff0c;从左到右搜索。返回搜索到的字符索引位置。 语法 InStr([start,]string1,string2[,compare]) 参数说明 Start - 一个可选参数。指定搜索的起始位置。搜索从第一个位置开始&#xff0c;从左到右。Strin…...

学习建设网站书籍/免费做网站自助建站

异常处理 1. 什么是异常处理 异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止 异常包含三个部分: 1. traceback异常的追踪信息2. 异常的类型3. 异常的信息 错误分为两大类: 1. 语法上的错误:在程序…...

php做动态网站/网站优化软件费用

PHP中的pthread拓展使用发布时间&#xff1a;2020-05-08 10:24:26来源&#xff1a;亿速云阅读&#xff1a;59作者&#xff1a;Leah今天小编就为大家带来一篇PHP中的pthread拓展使用的文章。小编觉得挺不错的&#xff0c;为此分享给大家做个参考。一起跟随小编过来看看吧。PHP是…...

做微信平台网站需要多少钱/微博推广方式

实现同一个接口的不同的类,根据调用总和类中静态类型(返回值同接口)方法,(传入不同值),根据if else判定该new哪一个实现类.从而使用不同的接口的实现方法. 将编程看作是一门艺术&#xff0c;而不单单是个技术。 敲打的英文字符是我的黑白琴键&#xff0c; 思维图纸画出的是我编…...

景德镇做网站公司/服务器租用

概述&#xff1a; 1&#xff09;媒体捕获设备包括摄像机和麦克风&#xff0c;还包括屏幕捕获“设备”。对于相机和麦克风&#xff0c;我们使用navigator.mediaDevices.getUserMedia()捕获MediaStreams 。对于屏幕录制&#xff0c;我们改用navigator.mediaDevices.getDisplayMe…...

经营网站挣钱/seo公司排名教程

使用宝塔面板安装mysqlLinux基本内容&#xff0c;里面有涉及到安装Mysql修改密码而且也要在数据库的菜单中设置root密码修改后密码后进行登录&#xff0c;就不会出现下面的报错了[rootcentos7 ~]# mysql -u root -pEnter password:ERROR 1045 (28000): Access denied for user …...