HTTP简介、工作原理、消息结构及头部

本文阅读 4 分钟

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议。 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。浏览器和服务器之间的传输协议是HTTP,用于了浏览器和服务器的通信。 一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。HTTP使用统一资源标识符(URI)来传输数据和建立连接。

HTTP协议工作在客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(WEB服务器)发送请求。web服务端根据接收的请求,向客户端发送响应请求。

HTTP默认端口号是80。

2.1、HTTP协议有三个特点:

1、HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2、HTTP是独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

3、HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

2.2、HTTP协议通信流程:

1.浏览器------->服务器-------->CGI(通用网关接口)Program------->数据库 2.数据库-------> CGI(通用网关接口)Program-------->服务器------->浏览器

3.1、客户端请求消息

主要由4个部分组成: ①请求行:指定了请求方法,请求地址和使用的协议版本

POST /fannuo_3.5/admin/cms_channel_edit.php?id=1 HTTP/1.1

②请求头部

Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1/fannuo_3.5/admin/cms_channel_edit.php?id=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 11963
Origin: http://127.0.0.1
DNT: 1
Connection: close
Cookie: admin_name=admin; admin_password=21232f297a57a5a743894a0e4a801fc3; PHPSESSID=3kq9ntuheuupt7no8ht3esmdlu; phpecmsupload=allow
Upgrade-Insecure-Requests: 1

③空行:空行分隔开请求头部和请求数据

④请求数据

c_name=%E5%85%B3%E4%BA%8E%E6%88%91%E4%BB%AC&c_parent=0&c_nname=&c_nav=1&c_cmodel=c_spage.php&c_dmodel=d_normal.php&c_mcmodel=c_mspage.php&c_mdmodel=d_mnormal.php&c_content=%3Cp+style%3D%22margin-top%3A0px%3Bmargin-bottom%3A0px%3Bwhite-space%3Anormal%3B%22%3E%0D%0A%09%3Cbr+

img

3.2、服务端响应消息

主要由4个部分组成: ①状态行:使用的协议及版本,响应码

HTTP/1.1 200 OK

②消息报头

Date: Fri, 18 Dec 2020 06:26:45 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02
X-Powered-By: PHP/7.3.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Connection: close
Content-Type: text/html; charset=utf-8
Content-Length: 107

③空行:分隔开响应头部和响应数据

④响应正文

<script type="text/javascript">alert("频道修改成功!");window.location.href="cms_channel.php"</script>

img

根据不同上下文,可将消息头分为:

1、General headers(通用标头): 同时适用于请求和响应消息,但与最终消息主体中传输的数据无关的消息头。

2、Request headers: 包含更多有关要获取的资源或客户端本身信息的消息头。

3、Response headers: 包含有关响应的补充信息,如其位置或服务器本身(名称和版本等)的消息头。

4、Entity headers(实体标头): 包含有关实体主体的更多信息,比如主体长(Content-Length)度或其MIME类型。

以下消息头按照英文字母排序列出:

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/sycamorelg/article/details/111368822
-- 展开阅读全文 --
Web安全—逻辑越权漏洞(BAC)
« 上一篇 03-13
Redis底层数据结构--简单动态字符串
下一篇 » 04-10

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复