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

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

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服务器软件。有时还包括其他信息,如所安装的模块和服务器操作系统,但其中包含的信息可能并不准确。

(5)Set-Cookie

消息头向浏览器发送另一个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:代表';

&代表&;

<代表<;

>代表>。

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

";代表";

#39;代表'。

也可以使用十六进制的ASCI码(以x为前缀)

"代表";

'代表'。


(5)Base64编码

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


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


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


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


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

(6)十六进制编码

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

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

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

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

谢谢!

 

目录
相关文章
|
3月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
508 130
|
2月前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
4月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
581 2
|
4月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
4月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
5月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
262 0
|
5月前
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
440 0
|
Web App开发 前端开发 Android开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题。
930 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
系统的升级涉及各个架构组件,细节很多。常年累月的修修补补使老系统积累了很多问题。 系统升级则意味着需要repair之前埋下的雷,那为何还要升级,可以考虑以下几个方面 成熟老系统常见问题: 1. 缺乏文档(这应该是大小公司都存在的问题。
713 0