HTTP简单认识

1、HTTP的请求和响应

HTTP的请求和响应都包含4个部分,在命令行输入
curl -v www.baidu.com
发出以下请求

> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.60.0
> Accept: */*
>
  1. 第一部分为:动词+路径+协议/版本(第一行)
  2. 第二部分每行格式:key1: value1
    上面引用代码中 'Host'; 'User-Agent'; 'Accept'都是key,冒号后面的为value
  3. 第三部分为:回车("\n",就是空着无内容的一行,用以分隔第二和第四部分,见上面代码第5行)
  4. 第四部分为:要上传的数据(也可以没有,上面代码中也未显示)

响应如下

< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Mon, 16 Jul 2018 00:48:49 GMT
< Etag: "58860504-94d"
< Last-Modified: Mon, 23 Jan 2017 13:28:36 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [1040 bytes data]
100  2381  100  2381    0     0  38403      0 --:--:-- --:--:-- --:--:-- 38403<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>

响应与请求类似,但是第一部分格式不同,
响应第一部分格式为:协议/版本号 状态码 状态解释
第四部分为需要下载的内容(见最后一行)


2、如何用Chrome开发者工具查看 HTTP 请求内容

  1. 打开Chrome
  2. 按F12,打开network
  3. 在导航栏输入网址
  4. Name下点击网址,在傍边的Headers可以看到Response Headers以及Request Headers,分别为响应和请求。

查看请求部分,如下图流程


image
  1. 点击Request Headers,再点击view source这步很重要,一定要点击view source,如下图
    image
  2. 然后会看到请求第一部分和第二部分的内容


    image
  3. 第四部分可以点击preview或者response看到。

查看响应部分与请求类似,点击Response Headers。


3、如何使用 curl 命令

curl是利用URL语法在命令行方式下工作的开源文件传输工具。
语法为:
curl [option] [url]

输入以下指令向百度网站发出请求,百度网站同时返回响应。
curl -v -s www.baidu.com
curl默认动词为GET,-s参数不会报错和显示进度; -v参数可以显示一次 http 通信的整个过程
输入 -x 可以支持其他动词。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,651评论 19 139
  • HTTP简介 HTTP(Hypertext Transfer Protocol,超文本传输协议 )是在万维网上进行...
    江湖竖子阅读 3,741评论 0 0
  • http简介 http的英文名称是:Hypertext transfer protocol.Tim Berners...
    疯狂的蜗牛Dianna阅读 4,351评论 0 2
  • 什么是HTTP? 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示...
    Frank_io阅读 1,898评论 0 0
  • 两年后,苏予坐在椅子上手捧着茶,眼睛盯着照片出神,想着,当初她没有做那个决定,是不是结局就会不一样。哪怕是错,她也...
    舒家小妹阅读 3,012评论 0 3