HTTP的请求与响应

今天来整理下关于http的请求与响应

http请求

我们在访问一个网页时,都会发什么数据给服务器呢?下面以访问百度首页为例,我们在在浏览器中输入:www.baidu.com, 此时请求的内容包括:

GET / HTTP/1.1

Host: www.baidu.com

User-Agent: curl/7.54.0(这里表示我用的什么软件发起的响应)

(User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36)

Accept: * / *(这里表示我接受你返回过来的任何内容)

http请求最多包含四个部分最少包含三个部分。

  • 第一部分:

    方法 路径 协议/版本

    • 共有8种方法如: GET(获取), POST(上传), PUT(更新), DELETE(删除),PATCH(局部更新), HEAD, OPTIONS, TRACE, CONNECT

    • 路径包括查询参数,但是不包括锚点,因为查询参数是给服务器的而锚点是给浏览器看的。路径一定是要以'/' 开头,如果没有写路径,那么会默认为'/'。

    • 协议/版本号 如http/1.1

  • 第二部分

    格式为:key : value

    如:

      Host: www.baidu.com 
      User-Agent: curl/7.54.0
      Accept: */*  
      Content-Length: 10(上传的数据的长度)
      Content-Type: application(/x-www-form-urlencoded(上传的数据的格式)
      (application:表示应用数据 www:万维网 
      from:表单 urlencoded:用urlencoded将数据压缩一下)
    复制代码

    你可以把任何想要告诉服务器的信息,都放在这里,以key:value的格式。第2部分的 Content-Type标注了第四部分的格式

  • 第三部分

    !!注意:第三部分是个回车,必须要有,是为了让服务器知道第四部分与第二部分的分界点

  • 第四部分

    第四部分就是要上传的数据,如用户名和密码,头像,昵称 等等。第四部分也可以是空的。

用Chrome开发者工具查看 HTTP 请求内容

  1. 打开浏览器进入百度主页
  2. 右键点击检查,再点击Network
  3. 在百度主页地址栏中输入https//www.baidu.com,回车
  4. 点击第一个请求,此时在右边的框内找到Request Headers,点击小箭头使其数据展开,然后点击右边的 view source,此时,所有的请求内容就一览无余了。
  5. 点一下浏览器上的Preserve log这样可以观察到请求,而不会因为页面刷新掉看不到请求记录

http响应

浏览器向服务器请求了之后,服务器会给予一个响应,那么响应的格式是怎么样呢?

响应分为四个部分

  • 第一部分

    协议/版本号 状态码 状态解释

    状态码:

      2xx -请求成功
      3xx - 请求的资源改变了位置
      4xx - 浏览器请求出错了,如语义错了,参数错了等
      5xx - 服务器出错了
    复制代码
  • 第二部分

    格式为: key : value

      Content-Length: 198
      Content-Type: text/html
      ......
    复制代码

    Content-Type 标注了第 4 部分的格式,遵循 MIME 规范

  • 第三部分

    回车

  • 第四部分

    要下载的内容,这部分可以很长很长很长(注意!!!: 返回的都是字符串,不是对象,也不是json,后台是无法返回对象给前端的,只能是字符串)

用Chrome开发者工具查看 HTTP 响应内容

  1. 打开浏览器进入百度主页
  2. 右键点击检查,再点击Network
  3. 在百度主页地址栏中输入https//www.baidu.com,回车
  4. 点击第一个请求,此时在右边的框内找到Response Headers,点击小箭头使其数据展开,然后点击右边的 view source,此时,所有的响应内容就一览无余了。第四部分在Response中。

命令curl的使用方法

curl是利用URL语法在命令行方式下工作的开源文件传输工具。 利用 curl命令可以向服务器发起请求。

如:curl -s -v -- "https://www.baidu.com/s?wd=java"

请求信息

GET /s?wd=java HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.43.0
Accept: */*
复制代码

响应信息

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 227
复制代码

.....后面还有很多就不拷贝了

也可以加入请求方法

curl -X POST -d "1234567890" -s -v -H "Frank: xxx" -- "https://www.baidu.com"
复制代码

GET & POST

get:获取内容

post: 上传内容

get在请求的时候也可以很多数据,但是一般服务器不会接收,服务器会觉得你来我这里拿东西还给我送东西,哪有这么好,一般不会这样子。拿东西的时候就好好拿东西,不要拿东西又上传东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值