HTTP是什么

HTTP是HyperText Transfer Protocol的缩写,中文就是超文本传输协议,所谓的超,是个学术用语,是基于某种事物增加了更多的信息维度,比如超像素xxx之类的.

协议是什么,协议说白了就是约定,约定就是模板,就是表格,就和你去银行办手续一样,客户不知道要提供什么信息,银行又不能一个客户一个客户教,所以就准备一样表格.

HTTP的脑洞(无事实根据)

为什么会有HTTP叫做报文呢,因为我觉得以前最早大家都是通过电报机来远程快速传递信息.由于每个字都老贵了,所以能简短就简短.就有了报文这个东西,一般包含以下信息

发件人

收件人

干什么

所以说到了现在都超文本这么吊的东西了,说白了还是和电报一样,滴滴滴,你发给服务器一个电报,服务器看看,然后滴滴滴,回给你一个电报.这就是所谓的超文本传输协议.

但是吊就吊在这个超字上,现在电脑便宜了,大街上一百块一台,所以说可以发更多的信息了,所谓更多的信息,就是除了文本本身的内容外,还可以携带一些网络参数以及约定的信息等,是指的信息维度的增加(除去内容还有其它维度),而不是文本内容变长了.

所以说HTTP通信,本质上和以前的电报还是没有什么区别的,唉,人类真是聪明又愚蠢啊.

HTTP报文格式

就像刚刚说的,一张白纸,怎么写才能让两边指导什么写的是什么呢?就牵扯到格式了,这种格式约定就是协议.HTTP其实就是一张这样的表单

HTTP报文头

就如同刚刚脑洞中以电报举例一样,HTTP的报头主要是一些参数信息,类似于

发件人

收件人

并不包含实际文本内容

HTTP报文头首行有3个数据,来分辨这个是Request报文还是Response报文,接下来每行是一个字段和一个内容,这些字段都是W3C规定好的,你当然可以自定义,但是只不过通用标准不认罢了.所以说字段相当于表格中

姓名: some SB

里的姓名,”some SB”这个内容可能会变,但是不管怎么发报文,姓名这一栏不会变.

HTTP报文体

HTTP报文体是开始于HTTP报文头遇到一个仅有换行的空行开始,这也是为什么会有CRLF换行符注入这种攻击,因为报文都是通过换行符来判断哪里是内容开始,报文头结束.可以通过换行符的注入,当报文头提前结束,进入报文体.

HTTP的Request和Response

就像刚刚说的一样,虽然HTTP都是基于报文,但是你发给服务器的电报和服务器返回给你的电报是不同的,他们的主要区别在于两点

报文头的字段

报文体是否可以省略

在Request中报文体并不是必须的,有些Request方法中可以省略,而Response中是不可以省略的,如果报文体因为各种情况没有了,那么就是空返回.

HTTP报文头的字段

通用字段Connection

Content-Encoding

Content-Length

Content-Type

Transfer-Encoding

请求Request字段Accept

Accept-Encoding

Authorization

Cookie

Host

If-Modified-Since

If-None-Match

Origin

Referer

User-Agent

响应Response字段Access-Control-Allow-Origin

Cache-Control

ETag

Expires

Location

Pragma

Server

Set-Cookie

WWW-Authenticate

X-Frame-Options

HTTP的Request方法

HTTP一共有六种Request方法,其中最重要的是GET和POST方法,除了这两个外还有剩下四种,但是不太常用.

HEAD

TRACE

OPTIONS

PUT

虽然不太常用,并不是不用注意

比如有根据TRACE的机制进行攻击的方法.TRACE方法主要用于诊断,服务器会返回Request里所有的报文头诶报文内容信息,所以在某下情况下,如果本地无法获取到Request的报文头,可以通过伪造链接,使用TRACE方法从返回报文里都出来Request中的信息.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/396150.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/396150.shtml
英文地址,请注明出处:http://en.pswp.cn/news/396150.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yeoman_使用yeoman轻松创建Yeoman生成器

yeomanby Krist Wongsuphasawat克里斯特旺苏帕萨瓦(Krist Wongsuphasawat) 使用yeoman轻松创建Yeoman生成器 (Creating Yeoman generators easily with yeoman-easily) I’ve used Yeoman to start many of my projects. It’s an amazing web scaffolding tool.我已经用Yeoma…

linux 轻量化图形界面,YOXIOS 入门教程--基于Linux的 轻量化GUI图形系统和硬件平台(41页)-原创力文档...

YOXIOS --基于 Linux 的轻量化 GUI图形系统和硬件平台YOXIOS 入门教程基于 Linux 的 轻量化 GUI图形系统和硬件平台(V1.0 2020-05)提示:阅读此文档需要有一定的单片机开发、C/C编程语言、和使用 IDE开发工具的基础YOXIOS (C) 2020 游芯科技第 1 页 共 41 页YOXIOS -…

第一阶段 XHTML.定位样式

一位初学php的随堂笔记,记录自己的成长! 1.清除浮动 (1)格式 clear:both清除两边|left清除左边 right清除右边 高度塌陷:父元素中的子元素都浮动,而父元素 没有设置高,那父元素的高为0 (2)万能清除(在父元素…

Canvas入门06-线段与像素边界

我们知道,使用以下2个API可以绘制一条线段: moveTo(x, y) 向当前路径中增加一条子路径,该子路径只包含一个点,此为线段的起始点lineTo(x, y) 将线段的下一个点加入子路径中context.strokeStyle rgb(200, 200, 0); context.lineWi…

函数表达书-读书笔记

定义函数的方式有两种:一种是函数声明,另一种就是函数表达式。函数声明的语法如下: function functionName(arg0,arg1,arg2){//函数体 } 函数声明,有一个重要特征就是函数声明提升。也就是在执行代码之前会先读取函数声明&#xf…

vue截取一个字符串_vue 截取字符串

let str abcdef;// 0str str.slice(0);//返回整个字符串 abcdefstr str.substring(0);//返回整个字符串 abcdefstr str.substr(0);//返回整个字符串 abcdef// 使用一个参数str str.slice(2);//截取第二个之后所有的字符 cdefstr str.substring(2);//截取第二个之后所有的…

网络工程师需要哪些知识_成长工程师可以教给我们哪些工程知识

网络工程师需要哪些知识I’ve been working as an engineer on the growth team at Airbnb for a couple of months now.我已经在Airbnb的成长团队担任工程师几个月了。 Since I’m in an environment full of passionate developers, I wanted to share some of the good eng…

linux父进程循环,LINUX C 父进程建立多个子进程循环非堵塞回收列子

下面 代码主要用于复习,留于此点击(此处)折叠或打开/*************************************************************************> File Name: fork5.c> Author: gaopeng QQ:22389860 all right reserved> Mail: gaopp_200217163.com> Created Time: …

服务器自动运行python_在虚拟主机中安装了python程序,如何使它在服务器上自动运行?...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":3,"count":3}]},"card":[{"des":"IP地理位置库(GeoIP Databases)是对运营商分…

模拟测试

题解: 3道水题。。 1。生活大爆炸版剪刀石头布 忘记怎么打f[5][5]{}这个了。。 然后发现里面啥都不加也可以 加的话要是{} 2.送礼物 双向搜 有点卡常数。。 我没写dfs 写了dp求多少(好智障啊。。 访问数组挺慢的所以应该速度差不多。。) lowb…

javascript闭包_通过邮寄包裹解释JavaScript闭包

javascript闭包by Kevin Kononenko凯文科诺年科(Kevin Kononenko) 通过邮寄包裹解释JavaScript闭包 (JavaScript Closures Explained by Mailing a Package) 如果您以前寄过包裹或信件,那么您可以了解JavaScript中的闭包。 (If you have mailed a package or lette…

linux 加入ad 用ssh,使用samba验证AD用户,允许AD用户登录到linux

使用samba验证AD用户,允许AD用户登录到linux2007年06月26日 星期二 14:101、先把samba加入到AD域中2、在smb.conf中添加一行,让登录进来的用户使用bashtemplate shell /bin/bash3、运行authconfig,在验证中选择 使用smb和kerberos,winbind验…

体会日子

体会日子 开通了博客园, 日子要记录一下。 以后要好好上进了。 posted on 2016-05-01 23:16 体会日子 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/yukunshi/p/5451485.html

selenium 难定位元素、时间插件

关于frame: 1. 如果网页存在iframe的话,传统的定位有时候找不到元素,需要切换frame; # 切换到leftFrame定位“测井设计” driver.switch_to_frame("leftFrame") driver.find_element_by_link_text(u"设计").click() # 切…

python kmeans聚类 对二维坐标点聚类_Kmeans均值聚类算法原理以及Python如何实现

第一步.随机生成质心由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给定两个质心,我们这个算法的目的就是将这一堆点根据它们自身的坐标特征分为两类,因此选取了两个质心,什么时…

HDU 2544最短路dijkstra模板题

最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 33657 Accepted Submission(s): 14617Problem Description在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt。可是每当我们…

我为期一个月的GitHub的经验教训

by JS由JS 我为期一个月的GitHub的经验教训 (Lessons from my month-long GitHub commit streak) “I want to learn JavaScript. Like, really learn it. Like, truly understand it.” — me in November 2016“我想学习JavaScript。 喜欢,真正地学习它。 喜欢&a…

安装itunes需要管理员身份_ITUNES无法安装,提示没有权限如何解决?

展开全部注意机器一定要登陆管理员系统,如果现在不是,可以注62616964757a686964616fe78988e69d8331333365646263销,切换一下用户。还有计算机不要有漏洞,如果有的话修复一下。打开开始运行,输入regedit,点击确认打开注册表编辑器,…

vs2012新建项目产生的问题

当用vs新建web项目时遇到 只需下载一个vs2012的更新插件 http://download.microsoft.com/download/A/0/2/A02C37E0-77F7-448A-BD5C-F66AB1F78DBC/VS11-KB3002339.exe 点击安装更新即可. 转载于:https://www.cnblogs.com/GreenLeaves/p/5452073.html

zoj4062 Plants vs. Zombies 二分+模拟(贪心的思维)

题目传送门 题目大意:有n个植物排成一排,标号为1-n,每株植物有自己的生长速度ai,每对植物浇一次水,该株植物就长高ai,现在机器人从第0个格子出发,每次走一步,不能停留,每…