千家信息网

http报文结构与curl的使用方法

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,本篇内容介绍了"http报文结构与curl的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!h
千家信息网最后更新 2024年11月29日http报文结构与curl的使用方法

本篇内容介绍了"http报文结构与curl的使用方法"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

http协议使用广泛,使用场景不必多说了。

http是应用层协议,基于tcp。如果要自己实现的话,应该先实现tcp部分的功能,然后按http的协议实现约定的功能。这种需求有时可能会出现,比如读者想写一个http服务器,那就要了解http协议。

但是,这一个流程,从http数据包,到tcp包(加tcp头),再到ip包(加ip头),以及它的逆向过程(解包过程),都有现成的库来实现,读者需要做的只是怎么更好的使用起来。

小程这里介绍的也不是什么复杂的http协议的实现,而只是介绍一下http请求与响应的数据结构,以及怎么便利地发送http请求。

本文介绍http请求与响应的报文结构,以及curl的使用。

先让读者看一个直观的示例:在百度的搜索框中,敲入"helloworld"并回车,这时会发起一个http请求,用charles来抓包,可以看到这样的请求与响应的信息:

关于charles的使用,小程之前有介绍到,读者可以关注"广州小程"微信公众号,并查阅"软件基础"菜单项的内容。

从数据包来看,有一个GET方法,返回了200的状态码,等等。

但这里混合了请求与响应的信息,如果分开来看,请求与响应各自有什么数据结构呢?

(1)请求报文

http请求数据,使用的结构是这样的:

{请求行,请求头,请求体}

小程引用网上的一张图,这张图描绘了这个结构:

参照上图,请求行是这个样子:

GET /index.html HTTP/1.1
或者:
POST /xiaocheng/about.html HTTP/1.1

注意,请求行一般不包括host的地址,而host地址存放在请求头中。

然后是请求头,分为多行,每一行是一个键值对(key: value的格式),比如请求头是这个样子的:

最后是请求体,一般来GET方法是不带请求体的,因为所有内容都放到请求行(特别是url中)或请求头中了,一般来说POST方法需要带请求体,比如在iTunes下载一个APP时,POST请求数据是这样的:

(2)响应报文

响应数据的结构,也可以分三部分:

{响应行,响应头,响应体}

这里给一个响应实例:

响应行,也叫状态行,包括http的版本、状态码与状态描述。

响应头跟请求头一样,由一行一行的key-value构成。

响应体一般就是请求方想要的数据了,但响应体不一定会存在,比如HEAD请求方法时不返回响应体(这时响应行就是请求方想要的)。

http请求与响应数据,还有其它的一些知识,比如GET与POST的区别、返回404/403/303表示什么意思,等等,这些知识读者可以具体搜索一下,小程这里不展开了。

在简单介绍过http请求与响应报文的结构后,小程介绍一个工具,这个工具可以发起http请求,这个工具就是curl。

(3)curl的使用

小程使用的是macos,mac自带了curl工具。

curl的功能也算强大的,提供了系列的选项。这里只介绍一些常规的使用方式。

get请求,与保存

curl www.baidu.com


curl "http://172.17.21.197:54321?pa1=hello"


// 保存,下载

curl -o file.html www.baidu.com

curl -o i.jpg http://img3.douban.com/lpic/s4549903.jpg


// -A 仿造ie与运行平台

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" www.baidu.com


// -e 仿造入口链接(即referer,用于盗链)

curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -e "www.google.com" www.baidu.com


// -x 使用代理

curl -x a.b.c.d:54321 http://google.com


// -D 保存cookie到文件

curl www.baidu.com -o aa.txt -D cookie.txt


// -b 读取文件并当作cookie数据来请求

curl www.baidu.com -b cookie.txt


// -H 设置请求头,这里设置了cookie跟ua

curl -H "Cookie: install_id=14621691626; sid_guard=\"0eb878191489e4247f643672c932c814|1504782359|2592000|Sat\054 07-Oct-2017 11:05:59 GMT\"; \n User-Agent: xxx/1.5.6 (iPhone; iOS 10.2; Scale/2.00)" "https://xxx.yy.com/…"

post

// -d 请求体

curl -d "user=nickwolfe&password=12345" http://www.linuxidc.com/login.cgi


curl -d "key=jet" 192.168.2.32:54321

post,以表单的方式(multipart/form-data)

// "file"为key名,随便起,后面为文件路径(包括文件包)

curl -F "file=@./myfile.ok" "http://172.17.xx.xx:54321"

"http报文结构与curl的使用方法"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 结构 小程 报文 方法 读者 内容 工具 文件 状态 知识 一行 功能 就是 过程 使用方法 信息 只是 地址 数据结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器怎么安装web 模拟人生怎么不能连接服务器 中外全文数据库有哪几个 网络安全手抄报8开纸图片 阿里云服务器安装jdk8 数据库触发器如何查看sql 单位服务器就是一台电脑么 上海菲信网络技术 更新数据库时发生错误列名无效 武汉腾讯网络安全学校 英文过期期刊数据库 冒险岛m哪个服务器人多 软件开发遇到的问题以及解决方案 杭州铁帅网络技术有限公司 采取措施提高全社会的网络安全 我的世界口袋妖怪服务器怎么弄 服务器安全有什么用 宜昌市 网络安全工作责任制 svn独立客户端连接服务器失败 北京打造互联网科技有限公司 数据库的查阅向导是什么 网络安全https市场规模 服务器7011 同城招聘软件开发定制 北京专业网络技术服务口碑推荐 网络安全和数据安全工作通知 光纤网络技术基础知识 怎么打开iis服务器 SRS流服务器支持多少连接 termux宝塔数据库
0