Python网络通信(4)— HTTP协议

一、url介绍

  1. URLUniform Resource Locator的简写,意思是统一资源定位符。
  2. 一个URL由以下几部分组成:
scheme://host:port/path/?query-string=xxx#anchor
  1. scheme: 代表的是访问的协议,一般为httphttpsftp等。
    host : 主机名,域名。比如www.baidu.com
    port : 端口号。当访问一个网站的时候,浏览器默认使用80端口号。
    path : 查找路径。比如:www.jianshu.com/trending/now,后面的trending/now就是path
    query-string : 查询字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查询字符串。
    anchor : 锚点,后台一般不用管,前端用来做页面定位的。
  2. 在浏览器中请求一个url,浏览器会对这个url进行一个编码。除英文字母,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。

二、http的请求方法

在HTTP协议中,定义了八种请求方法,最常用的请求方法是get和`post``请求。

  1. get请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任影响的时候使用get请求。
  2. post请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post请求。

在HTTP协议中,向服务器发送一个请求,数据分为三部分,第一个是把数据放在url中,第二个就是把数据放在head中,第三个是把数据放在body中(在post请求中)。

三、常见请求头参数

  1. User-Agent : 浏览器名称。请求一个网页的时候,服务器通过这个参数就可以知道这个请求是有那种浏览器发送的。
  2. Referer : 表明当前这个请求是从哪个url过来的。
  3. Cookie : http协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人,因此这个时候就用Cookie来做标识,一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了。

如下所示,是给百度首页发送的请求头:

python 458协议 python网络协议解析_服务器

四、常见响应状态码

  1. 200 : 请求正常。服务器正常的返回数据。
  2. 301 : 永久重定向。比如在访问www.jingdong.com的时候会重定向到www.jd.com
  3. 302 : 临时重定向。比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面。
  4. 400 : 请求的url在服务器找不到。换句话说就是url错误。
  5. 403 : 服务器拒绝访问,权限不够。
  6. 500 : 服务器内部错误,可能服务器出现bug了。

如下所示,是访问百度首页时,百度服务器返回的响应头:

python 458协议 python网络协议解析_python 458协议_02