Web-Http基本概念(请求与响应)

目录

1、http请求

(1)get

(2)host

(3)accept

(4)referer

(5)accept-language

(6)user-agent

2、http响应

(1)HTTP/1.1

(2)200

(3)OK

(4)Server

(6)Pragma

(7)Expires

(8)content-type

(9)content-length

3、除get和post外的其他方法

(1)HEAD

(2)TRACE

(3)OPTIONS

(4)PUT

4、cookie

(1)Expires

(2)Domain

(3)Path

(4)Secure

(5)HTTPOnly

5、状态码

(1)1xx——提供信息

(2)2xx—请求被成功提交

(3)3xx——客户端被重定向到其他资源

(4)4xx——客户端错误

(5)5xx——服务器执行请求时遇到错误

6、HTTPS

7、常见编码及常见编码字符

(1)URL编码

(2)Unicode编码

(3)UTF-8编码

(4)HTML编码

(5)Base64编码

(6)十六进制编码


HTTP:超文本传输协议

1、http请求

只要我们打开一个网页,就会自动向服务器发送一个http请求,服务器会返回一个回复,即我们看到的网站内容。

http请求消息头及解释:

Host:用来告知服务器,请求的资源所处的互联网主机名和端口号。
User-Agent:这个消息头提供与浏览器或生成请求的其他客户端软件有关的信息。
Accept:这个消息头用于告诉服务器,客户端愿意接受哪些内容,如图像类型、办公文档格式等。
Accept-Language:是一个实体消息首部,用来说明访问者希望采用的语言或者是语言的组合。Accept-Encoding:这个消息头用于告诉服务器,客户端愿意接受哪些内容编码。
Content-Type:表示具体请求中的媒体类型信息,确切地说是客户端告知服务端,自己即将发送的请求消息携带的数据结构类型,好让服务端接收后以合适的方式处理。
Content-Length:用于描述HTTP消息实体的传输长度。
Origin:这个消息头用在跨域Ajax请求中,用于指示提出请求的域。
Referer:这个消息头用于指示提出当前请求的原始URL。
Cookie:这个消息头用于向服务器提交它以前发布的Cookie。

(1)get

说明http方法(最常用),作用是从web服务器获取一个资源,URL通常由请求资源名称及一个包含客户端向该资源提交的参数的可选查询字符串组成。

(2)host

用于指定出现在被访问的完整URL中的主机名称。

(3)accept

表示浏览器支持的MIME类型。

(浏览器支持的MIME类型是text/html、application/xhtml+xml、application/xml、*/*)

/前是type(类型),/后是subtype(子类型)

text:用于标准化表示的文本信息。text/html表示html文档。
application:用于传输应用程序数据或二进制数据。
application/xhtml+xml表示xhtml文档。
application/xml表示xml文档。

(4)referer

用于表示发出请求的原始URL。

(5)accept-language

表示浏览器支持的语言类型,包括中文(zh)、简体中文(zh-cn)

优先支持简体中文,q为权重系数,q越大,请求越倾向于获得其“;”前的类型表示的内容;

若没有指定q值,默认为1,用q=0来题型服务器浏览器不接受的内容类型。

(6)user-agent

提供与浏览器或其他生成请求的客户端软件有关的信息。

2、http响应

Content-Type:返回内容的MIME类型。
Date:原始服务器消息发出的时间。
Server:这个消息头提供所使用的Web服务器软件的相关信息。
Set-Cookie:这个消息头用于向浏览器发布Cookie,浏览器会在随后的请求中将其返回给服务器。Transfer-Encoding:文件传输编码。
Vary:告诉下游代理是使用缓存响应还是从原始服务器请求。
X-Frame-Options:这个消息头指示浏览器框架是否以及如何加载当前响应。

上面的代码代表的是服务器响应返回代码,响应完以后,就可以看到网站的状态。

(1)HTTP/1.1

表示使用的HTTP版本。

(2)200

表示请求结果的数字状态码(200最常用),表示成功提交了请求,正在返回所请求的资源。

(3)OK

进一步说明响应状态,可以包含任何值,当前浏览器不将其用于任何目的。

(4)Server

指明所使用的Web服务器软件。有时还包括其他信息,如所安装的模块和服务器操作系统,但其中包含的信息可能并不准确。

消息头向浏览器发送另一个Cookie,它将在随后向服务器发送的请求中由Cookie消息头返回。

(6)Pragma

消息头指示浏览器不要将响应保存在缓存中。

(7)Expires

消息头指出响应内容已经过期,因此不应保存在缓存中。

(8)content-type

表示消息主体中包含一个HTML文档。

(9)content-length

规定消息主体的字节长度。

3、除get和post外的其他方法

(1)HEAD

这个方法的功能与GET方法相似,但服务器不会在其响应中返回消息主体。用于检查某一资源在向其提交GET请求前是否存在。.

(2)TRACE

用于诊断。检测客户端与服务器之间是否存在任何操纵请求的代理服务器。

(3)OPTIONS

要求服务器报告对某一特殊资源有效的http方法,通常返回一个Allow消息头的响应,并在其中列出所有有效的方法。

(4)PUT

试图使用包含在请求主体中的内容,向服务器上传指定的资源。

4、cookie

服务器使用set-cookie响应消息头发布cookie

Set-Cookie:tracking=tI8rk7joMx44S2Uu85nSWc
然后,用户的浏览器自动将下面的消息头,添加到随后返回给同一服务器的请求中。Cookie:traeking=tI8rk7joMx44S2Uu85nSWc
Cookie一般由一个名/值对构成,可以在服务器响应中使用几个Set-Cookie消息头发布多个Cookie,并可在同一个Cookie消息头中用分号分隔不同的Cookie,将它们全部返回给服务器。


Set-Cookie消息头还可包含以下任何可选属性,用它们控制浏览器处理Cookie的方式:

(1)Expires

用于设定Cookie的有效时间

(2)Domain

用于指定Cookie的有效域

(3)Path

用于指定Cookie的有效URL路径。

(4)Secure

如果设置这个属性,则仅在HTTPS请求中提交Cookie。

(5)HTTPOnly

如果设置这个属性,将无法通过客户端JavaScript直接访问Cookie。

5、状态码

每条http响应消息必须在第一行中包含一个状态码,说明请求结果。

分类:

(1)1xx——提供信息

100 Continue:当客户端提交一个包含主体的请求时,将发送这个响应,表示已收到请求消息头。

(2)2xx—请求被成功提交

200 OK:表示已成功提交请求,且响应主体中包含请求结果。
201 Created:PUT请求的响应返回这个状态码,表示请求已成功提交。

(3)3xx——客户端被重定向到其他资源

301 Moved Permanently:本状态码将浏览器永久重定向到另外一个在Location消息头中指定的URL,以后客户端应使用新URL替换原始URL。
302 Found:本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL,客户端应在随后的请求中恢复使用原始URL。
304 Not Modified:本状态码指示浏览器使用缓存中保存的所请求资源的副本,服务器使用If-Modified-Since与If-None-Match消息头确定客户端是否拥有最新版本的资源。

(4)4xx——客户端错误

400 Bad Request:本状态码表示客户端提交了一个无效的HTTP请求,当以某种无效的方式修改请求时(例如,在URL中插入一个空格符),可能会遇到这个状态码。
401 Unauthorized:说明服务器在许可请求前要求HTTP进行身份验证,WWW-Authenticate消息头可以详细说明所支持的身份验证类型。
403 Forbidden:本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。
404 Not Found:本达态码表示所请求的资源并不存在。
405 Method Not Allowed:本状态码表示指定的URL不支持请求中使用的方法,例如,如果试图在不支持PUT方法的地方使用该方法,就会收到本状态码。
413 Request Entity Too Large:如果在地代码中存在缓冲问题并就此提交超长数据串,则本状态码表示请求主体过长,服务器无法处理。
414 Request-url Too Long:与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。

(5)5xx——服务器执行请求时遇到错误

500 Intermal Server Error:本状态码表示服务器在执行请求时遇到错误,当提交无法预料的输入、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码,应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。
503 Serice Uharalable:通常本状态码表示尽管Web服务器运转正常并且能够响应请求,但服务器访问的应用程序还是无法做出响应。

6、HTTPS

本质与http一样,都属于应用层协议,但HTTPS通过安全传输机制(安全套接层)传送数据。

http传输主要是进行明文传输,HTTPS则对所有数据都进行了加密。

7、常见编码及常见编码字符

(1)URL编码

以“%”为前缀,后面是字符的两位十六进制ASCII代码。

%3d代表=;
%25代表%;
%20代表空格;
%0a代表新行;
%00代表空字节;

注意:“+”代表URL编码的空格

(2)Unicode编码

16位Unicode编码的工作原理与URL编码类似,通过HTTP进行传输,字符以“%u”为前缀,其后是这个字符的十六进制Unicode码点。
%u2215代表/;
%u00e9代表é。

(3)UTF-8编码

这是一种长度可变的编码标准,它使用一个或几个字节表示每个字符,也是通过http进行传输,
UTF-8编码的多字节字符以%为前缀 其后用十六进制表示每个字节。
%c2%a9代表©;
%e2%89%a0代表≠。

(4)HTML编码

"代表";
&apos:代表';
&代表&;
&lt;代表<;
&gt;代表>。

此外,任何字符都可以使用它的十进制ASCII码进行HTML编码

&#34;代表";
#39;代表'。
也可以使用十六进制的ASCI码(以x为前缀)
&#x22;代表";
&#x27;代表'。

(5)Base64编码

Base64编码仅用一个可打印的ASCII字符就可以安全转换任何二进制数据。

它常用于对电子邮性附件进行编码,使其通过SMTP安全传输,还可以用于在基本HTTP验证机制中对用户证书进行编码。

Base64编码将输入数据转换成3个字节块,每个字节块被划分为4段,每段6个数据位。这6个数据位有64种不同的排列组合。因此每个段可以使用一组64个字符表示,Base64编码使用以下字符集中只包含可打印的ASCI字符:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/。

如果最后的输入数据块不能构成3段输出数据,就用一个或两个等号(=)补足输出。

关于base64在之前的博客中有详细介绍,包括它的转换原理和过程、对照表等:

http://t.csdn.cn/qD1gR

(6)十六进制编码

许多应用程序在传输二进制数据时直接使用十六进制编码,用ASCII字符表示十六进制数据块。

十六进制码和base64码通常都很容易辨认,我们应经常留意。

后面会继续更新Web、CTF、kali等相关的一些知识

创作不易,喜欢的可以收藏点赞关注支持一下哈

谢谢!
 


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5851.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 文件系统是怎么工作的?

同 CPU、内存一样&#xff0c;磁盘和文件系统的管理&#xff0c;也是操作系统最核心的功能。 磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上&#xff0c;提供了一个用来管理文件的树状结构。 那么&#xff0c;磁盘和文件系统是怎么工作的呢&#xff1f;又有…

毕业设计源码基于springboot的旧物置换系统的实现

摘 要 随着时代在一步一步在进步&#xff0c;旧物也成人们的烦恼&#xff0c;许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机&#xff0c;通过对用户进行管理。为减少管理员的工作&#xff0c;同…

WEB前端作业——banner的切换

实现banner的左右切换按钮 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>div,ul,li,a,span,img{margin:0;padding:0;}#banner { overflow:hidden; width:100%; height:400px; position:rela…

火速上线zkSync Era主网,盘点SpaceFi的Web3布局

最近zkSync Era主网的上线引发了市场对Layer2的和零知识证明技术的关注&#xff0c;而作为Web3跨链应用平台的SpaceFi也在第一时间对zkSync Era进行了支持&#xff0c;并与3月28日上线DEX、Farm、Plant NFT等多个产品&#xff0c;一时间成为zkSync上的热门生态项目。打造一站式…

银行数字化转型导师坚鹏:数字化转型背景下的银行柜员提升之道

数字化转型背景下的银行柜员提升之道 课程背景&#xff1a; 很多银行都在开展银行数字化运营工作&#xff0c;目前存在以下问题急需解决&#xff1a; l 不清楚银行数字化运营包括哪些关键工作&#xff1f; l 不清楚银行数字化运营工作的核心方法论&#xff1f; l 不清楚银行数字…

【新2023Q2模拟题JAVA】华为OD机试 - 不含 101 的数

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:不含 101 的数 题目 橡皮擦…

如何正确选择7/8电连接器

7/8电连接器简称连接器&#xff0c;接线端子&#xff0c;是电子元器件的一个细分领域&#xff0c;主要用于电路与电路之间的连接。在工业生产中&#xff0c;线路连接可以说是无处不在&#xff0c;因而连接器的使用范围当然是十分广泛&#xff0c;应用在各个行业。 选择科迎法7/…

第8章_索引的创建与设计原则

第8章_索引的创建与设计原则 &#x1f3e0;个人主页&#xff1a;shark-Gao &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是shark-Gao&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f389;目前状况&#xff1a;23届毕业生&#xff…

学剪辑难吗 如何使用会声会影2023做剪辑视频

很多剪辑初学者都问过一个问题&#xff0c;学剪辑难吗&#xff1f;其实不论学什么&#xff0c;只要用心学都不难&#xff0c;今天我们就来讲讲如何学做剪辑视频&#xff0c;感兴趣的小伙伴们不要走开&#xff01;一、学剪辑难吗 其实学剪辑并不是件难事&#xff0c;但是需要掌握…

非科班应届生培训Java能就业吗?

想要学习Java开发的同学们&#xff0c;不要再太过纠结非科班可以学Java吗&#xff1f;学历低能学Java开发吗?Java开发怎么才能学得好?没有计算机基础能学习Java开发吗&#xff1f;这些问题了。想的再多都不如行动&#xff0c;大胆努力认真踏实地学习就好。谁不是一步步来的呢…

太奇怪了!小公司面试全挂,大厂面试全过,为什么小公司要求比大厂还高?...

大厂的人才去小公司面试&#xff0c;一定是降维打击吗&#xff1f;还真未必。一位网友很困惑&#xff1a;真的奇怪&#xff0c;小公司面试全挂&#xff0c;大厂面试10个过了9个&#xff0c;感觉小公司要求比大厂还高&#xff0c;这是怎么了&#xff1f;来看看网友们的看法。有人…

Linux top 命令解析及使用

目录前言1. top 监测结果分析1.1 第一部分&#xff1a;系统整体性能分析1.1.1 第一行(top...)&#xff1a;系统状态1.1.2 第二行(Tasks...)&#xff1a;进程状态信息1.1.3 第三行(Cpus...)&#xff1a;CPU 的整体负载1.1.4 第四行(KiB Mem...)&#xff1a;Mem内存信息&#xff…

Liunx——权限

目录 shell命令以及运行原理 Linux权限的概念 Linux权限管理 01.文件访问者的分类&#xff08;人&#xff09; 02.文件类型和访问权限&#xff08;事物属性&#xff09; a) 文件类型 b)基本权限 03.文件权限值的表示方法 a)字符表示方法 b)8进制数值表示方法 04.文件…

蚂蚁面试题详细总结集锦

jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化&#xff0c;从之前的单纯的数组链表结构变成数组链表红黑树。也就是说在JVM存 jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化&#xff0c;从之前的单纯的数组链…

Redis分布式锁、Redisson原理

文章目录简单的分布式锁实现流程Lua脚本介绍Redisson实现分布式锁原理基本使用原理首先是lock加锁逻辑锁续命逻辑自旋重试逻辑释放锁唤醒其他阻塞线程逻辑RedLock红锁介绍与基本使用问题分布式锁性能提升简单的分布式锁实现流程 最初的版本&#xff0c;使用setnx命令加锁&…

python+appium+pytest自动化测试-参数化设置

来自APP Android端自动化测试初学者的笔记&#xff0c;写的不对的地方大家多多指教哦。&#xff08;所有内容均以微博V10.11.2版本作为例子&#xff09;在自动化测试用例执行过程中&#xff0c;经常出现执行相同的用例&#xff0c;但传入不同的参数&#xff0c;导致我们需要重复…

腾讯后端开发实习一面(24届)

毫无准备的腾讯一面&#xff0c;最近都在忙比赛去了&#xff0c;突然收到腾讯一面的邮件&#xff0c;直接没准备。。。 总结&#xff0c;除了Vue其他的都挺好&#xff0c;但是腾讯hr为啥Vue面我四个问题&#xff0c;不是面的后端开发吗&#xff0c;好难呀&#xff0c;都只能随…

java基础知识——12.小练习

这篇文章就是主要做一些算法小练习用的 1.求机票价格 题目如下&#xff1a; 需求&#xff1a;机票价格按照淡旺季&#xff0c;头等舱经济舱来收费。输入机票原价&#xff0c;淡旺季&#xff0c;头等舱或经济舱来获取机票价格 规则如下&#xff1a;旺季&#xff08;5-10&…

【 Bean 作⽤域和⽣命周期 】

文章目录引用一、认识 Bean的作用域二、作⽤域定义三、Bean 的 6 种作⽤域四、Bean 原理分析4.1 Bean 执行流程4.2 Bean ⽣命周期引用 从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作资源&#xff0c;所以接下来我们…

你真的会写 git commit message 吗?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…