美文网首页程序员
简单了解HTTP

简单了解HTTP

作者: c37d344afd22 | 来源:发表于2016-11-23 21:13 被阅读265次

我们现在所说的http协议大多是使用HTTP/1.1版本

简单看一下发送请求和接收数据

首先请求一个网址,我们最熟悉的知乎日报消息接口

http://news-at.zhihu.com/api/4/news/latest

然后我们用Chrome自带的开发者工具来查看一下这次请求的请求头

Request Headers
    GET /api/4/news/latest HTTP/1.1
    Host: news-at.zhihu.com
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: zh-CN,zh;q=0.8

开始的GET为我们请求的方法method,然后 /api/4/news/latest 是我们想要访问的资源,也叫Request Uri,HTTP/1.1也就是我们http协议的版本,而 news-at.zhihu.com 则就是我们的服务器地址了。

一个完整的请求是由以下组成

  • 请求方法
  • Request Uri
  • http协议版本
  • 服务器地址
  • 请求首部字段(Connection以及后面的字段)
  • 内容实体(这里没有实体)

当我们的服务器接收到请求,那么就会给我们返回

Response Headers
    HTTP/1.1 200 OK
    Date: Wed, 23 Nov 2016 12:34:31 GMT
    Content-Type: application/json; charset=UTF-8
    Transfer-Encoding: chunked
    Etag: W/"5b1c62c079999ad155b99ed987f581b3be9363eb"
    X-Backend: zhihu-daily.zhihu-daily-web.da6ac16e
    Content-Encoding: gzip
    X-Req-ID: 2AADF158358CD7
    Server: ZWS
    Vary: Accept-Encoding

首先HTTP/1.1不用多说,是http的版本,200是返回给我们的状态码,OK是原因短语,然后Date是我们当前响应的时间,接着是我们返回的类型等等。

HTTP为不保存状态的协议

什么叫不保存状态的协议?

http协议自身不对请求和响应之间的状态进行保存,也就是说只要有新的请求,就会有新的响应。也不会做持久化的处理。

持久化连接

在以前的http版本中是没有持久化的这个概念的,所以就是每次建立连接获取数据后,都要关闭连接,那么我在频繁请求大数据的时候,这样就会显得很麻烦,并且效率不高。

所以在1.1的版本中,http新加了一个标准:也就是只要当任意一方不提出断开连接,那么久一直保持连接状态。所以在1.1和部分1.0版本中默认就是持久连接

Cookie

刚才说了http是无状态协议,那么他就不会对他的响应和请求做处理,那么比如我逛购物网站的话,那么这样就成为了一个问题,岂不是我每次跳转一个页面都会让我登录?所以这个时候就引入了Cookie。

例:现在请求www.baidu.com

Response Headers
    HTTP/1.1 200 OK
    Server: bfe/1.0.8.18
    Date: Wed, 23 Nov 2016 13:03:42 GMT
    Content-Type: text/html;charset=utf-8
    Content-Length: 19119
    Connection: keep-alive
    Cache-Control: no-cache
    Content-Encoding: gzip
    Set-Cookie: H_WISE_SIDS=107504_108269_100273_111887_100103_111914_107851_103342_111962_110773_110631_110642_110020_107800_111123_110610_110717_110693_111870_110497_110010_111550_107917_109586_111326_111927_109588_110655_107311_111280_110031_111216_110085; path=/; domain=.baidu.com
    Set-Cookie: BDSVRTM=148; path=/
    Strict-Transport-Security: max-age=604800
    Traceid: 147990622201950656101683597674316466511
    Set-Cookie: __bsi=12477407333812093255_00_108_R_N_153_0303_C02F_N_I_I_0; expires=Wed, 23-Nov-16 13:03:47 GMT; domain=www.baidu.com; path=/

当我们请求服务器时,服务器会通过Set-Cookie字段来通知我们客户端保存Cookie,所以当我们客户端保存了这个Cookie,并且下次请求用这个Cookie来请求的话,服务器就会发现我们的Cookie,并且来查找当前是哪个客户端发来的请求,然后对比服务器的记录来获得之前的状态信息


最后

爱生活,爱小丽,爱Android

相关文章

  • 简单了解HTTP

    我们现在所说的http协议大多是使用HTTP/1.1版本 简单看一下发送请求和接收数据 首先请求一个网址,我们最熟...

  • 二、http与https简单了解

    上篇文章介绍了在协议分层的TCP/IP(或四层)通讯协议采用了5层的层级结构,5层分别包括:应用层、传输层、网络层...

  • ab测试工具

    做http的压力测试之前,需要简单了解一下http协议(http的响应码含义、http请求方式、http的head...

  • 图解HTTP后的一些总结

    HTTP 图解笔记 一 .简单了解 1.1HTTP背景 1.1.1 HTTP的诞生 1989 年 3 月,互联网还...

  • Django学习(一):Django 简介

    在使用Django编写HTTP服务之前,可以先简单的了解一下HTTP。 什么是HTTP HTTP协议:超文本传输协...

  • 了解Http

    http学习笔记 1. 什么是Http? Hypertext Transfer Protocol-超文本传输协议 ...

  • iOS中调用系统日历 - <EventKit/EventK

    1.首先简单了解 EventKit ---- 摘自http://docs.xamarin.com/gu...

  • 了解Flask并实现简单的HTTP请求

    结合我们822实验室开源的图像处理平台(http://822lab.top)介绍Flask后端开发,供后续学弟学妹...

  • 了解Http基础

    网络分层模型: TCP/IP基础: TCP三次握手——> TCP四次挥手——> 一、HTTP1.0与HTTP 1....

  • 了解HTTP/HTTPS

    一、 了解HTTP/HTTPS 1、 HTTP构建于TCP/IP协议之上,默认端口号是80 2、 HTTP主要特点...

网友评论

    本文标题:简单了解HTTP

    本文链接:https://www.haomeiwen.com/subject/tjgvpttx.html