当前位置: 首页 > Web前端 > HTML

HTTP入门(一):在Bash中使用curl查看请求和响应

时间:2023-04-02 13:39:14 HTML

HTTP入门(一):在Bash中使用curl查看请求和响应本文简单总结了HTTP请求和响应。本文的主要目的是总结学习内容,方便日后参考。详细教程和原理请参考HTTP文档(MDN)。本文版权归马淘淘所有。本文引用的图文版权归原作者所有,侵权必删。如有错误,请在下方评论区指出。欢迎积极讨论。服务器与浏览器的交互浏览器负责发起请求服务器在80端口接收请求服务器负责返回内容(响应)浏览器负责下载响应内容HTTP协议的功能就是指导浏览器和服务器如何通信。请求使用curl-s-v-H"Mtt:xxx"--https://www.baidu.com在Bash中创建请求并获得响应。命令行解释截图:-s:短信息-v:>表示请求,<表示响应-H:添加响应头请求和响应截图:请求内容:>GET/HTTP/1.1GET方法发送请求获取默认根目录,使用http1.1协议>Host:www.baidu.comhost>User-Agent:curl/7.58.0Requestsentwithcurl7.58>Accept:*/*Acceptanycontentbytheserverreturned>Frank:xxx>有不同参数的回车测试curl-XPOST-s-v-H"Frank:xxx"--"https://www.baidu.com"测试请求内容为POST/HTTP/1.1因为-x改为postHost:www.baidu.comUser-Agent:curl/7.54.0Accept:*/*Frank:xxxcurl-XPOST-d"1234567890"-s-v-H"Frank:xxx"--https://www.baidu.com测试请求的内容为POST/HTTP/1.1Host:www.baidu.comUser-Agent:curl/7.54.0Accept:*/*Frank:xxxContent-Length:10内容lengthis10Content-Type:application/x-www-form-urlencoded1234567890"-d1234567890":我要上传数据到百度1234567890Content-Length:10:内容长度为10Content-Type:我要上传的内容的格式uploadGet就是获取,只看浏览器内容,不做其他事post表示发布上传。比如我要注册登录,我把数据写在-d里,然后请求的时候直接上传。Summary:RequestFormat1VerbPath(HTTP必须以/开头)Protocol/Version2Key1:value12Key2:value22Key3:value32Content-Type:application/x-www-form-urlencoded2Host:www.baidu.com2User-Agent:curl/7.54.03(始终回车,用于区分两部分或四部分)4上传的数据请求最多包含四部分,最少包含三部分。(也就是说,第四部分可以为空)第三部分永远是回车(n)。动词包括GETPOSTPUT(整体更新)、PATCH(部分更新)、DELETE(删除一些东西)、HEADOPTIONS等。这里的路径包括“Queryparameters”,但不包括“anchor”(服务器不看theanchor,onlythepath)如果不写路径,则路径默认为/Part2中的Content-Type标明Part4中的格式response以上三个请求示例,前两个请求对应的response是HTTP/1.1200OKAccept-Ranges:bytesCache-Control:private,no-cache,no-store,proxy-revalidate,no-transformConnection:Keep-AliveContent-Length:2443Content-Type:text/html(百度的数据长度和内容格式当百度返回时)Date:Tue,10Oct201709:14:05GMTEtag:"5886041d-98b"Last-Modified:Mon,23Jan201713:24:45GMTPragma:no-cacheServer:bfe/1.0.8.18Set-饼干:BDORZ=27315;最大年龄=86400;域名=.baidu.com;path=/太长,省略...HTTP/1.1302FoundConnection:Keep-AliveContent-Length:17931Content-Type:text/htmlDate:星期二,2017年10月10日09:19:47GMTEtag:“54d9749e-460b”服务器:bfe/1.0.8.18后面太长,省略......GET请求和POST请求对应的response可以相同也可以不同response的第四部分可以很长Responseformat1Protocol/versionnumberStatuscodeStatusexplanation2Key1:value12Key2:value22Content-Length:179312Content-Type:text/html34要下载的内容?状态码是服务器对浏览器说的,详见维基百科HTTP状态码?1xx不常用?2xx表示成功200成功(get)204创建成功(post)?3xxmeansgoaway301(原为Thepersonmovedaway,whereyoumovedwherewillbesuedinakey:valueinthesecondpartlocation)302(出去,过几天回来,表示服务器暂时不在)4xx表示你错了(肯定是访问者弄错了,比如你输入了错误的地址)?5xx表示ok,我错了(表示服务器错了)?Content-Type在Part2中标示的格式第4部分?在第2部分中Content-Type遵循MIME规范