07python基础进阶之http协议

一、浏览器访问网站的过程

1、 基本流程
    用户输入网址,
    浏览器请求DNS服务器, 获取域名对应的IP地址,
    请求连接该IP地址服务器,
    发送资源请求. (HTTP协议),
    web服务器接收到请求, 并解析请求,
    获取用户想要的资源,
    将资源返回给http客户端程序(浏览器),
    浏览器解析呈现请求的数据
    
2、 域名与域名服务器
   1、网站: www.sina.com.cn
        -www: 主机名 
        - sina:机构名
        - com:机构类型
        - cn: 国家名  例如:tw  hk   us  uk  jp 
        
   2、域名服务器(DNS)
      存放域名与ip对应的服务器

3、URL的组成部分
    https://news.163.com/hello.html?page=1&count=10

    1、协议部分
    2、域名部分
    3、资源路径部分
    4、查询参数部分 [可选]

三、Http协议简介

1、什么是协议
    协议就是双方之间的一种约定、一种规则;按照此约定、规则,双方就可以顺畅的、有条不紊的进行交流和通信
    
2、http协议
    http: 超文本传输协议(hypertext transfer protocol)用于web服务器与浏览器之间传输网页数据的协议,http协议基于tcp协议基础之上
   
3、http协议作用
    协议规定了浏览器和 Web 服务器通信数据的格式

四、http请求报文格式:
1、浏览器向服务器发送请求的数据格式:
1、 普通请求版本:
GET / HTTP/1.1 # 请求行
GET 此次请求的请求方式
/ 请求的资源的路径
HTTP/1.1 http的版本号,固定写法

        Host: 127.0.0.1:8088      # 请求头
            主机名:服务器的域名
        Connection: keep-alive
            连接的类型: 长连接
        Upgrade-Insecure-Requests: 1
            支持升级为安全版本  (支持升级为https版本)
        User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
            用户代理: 浏览器告诉服务器的一些浏览器的信息  (客户机信息)
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
            浏览器能够接受的文件类型
        Accept-Encoding: gzip, deflate, br
            浏览器能够接受的编码方式
        Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
            浏览器能够接受的语言

        
    2、 有请求体版本:
        POST / HTTP/1.1       # 请求行
        Host: localhost:8080       # 请求头
        Connection: keep-alive
        Content-Length: 34
        Cache-Control: max-age=0
        Upgrade-Insecure-Requests: 1
        Origin: null
        Content-Type: application/x-www-form-urlencoded
        User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
        Accept-Encoding: gzip, deflate, br
        Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
                    # 分割行, 空行
        username=laozhuang&password=123456     # 请求体


    (没有解码的时候的请求报文)
    b'
    GET / HTTP/1.1\r\n
    Host: 127.0.0.1:7981\r\n
    Connection: keep-alive\r\n
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\n
    Upgrade-Insecure-Requests: 1\r\n
    User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36\r\n
    Accept-Encoding: gzip, deflate, sdch\r\n
    Accept-Language: zh-CN,zh;q=0.8\r\n
    \r\n'   # 空行

2、 HTTP请求报文 总结
    1、请求行[请求方法 资源路径 版本\r\n]  GET /index.html HTTP/1.1\r\n
    2、请求头[头名: 头值\r\n]    Host: localhost 
    3、空行  [\r\n]     "\r\n"
    4、请求体[浏览器给服务器发送的数据]

五、http协议响应报文格式:
1、访问网页的响应报文格式
HTTP/1.1 200 OK 响应行

        协议版本  HTTP/1.1
        状态码   
            2xx 成功  200 OK
            3xx 重定向 
            4xx 客户端错误 404 Not Found
            5xx 服务器错误 503 Service Unavailable

        状态说明
        HTTP
    Cache-Control: private       响应头
        缓存控制命令
    Content-Encoding: gzip
        相应的内容是压缩的,通过gzip
    Content-Type: text/html;charset=utf-8
        响应体的类型:网页编码utf-8
    Date: Fri, 06 Apr 2018 09:05:27 GMT
        日期 东八区时间 
        服务器回复响应报文的时间 -- 格林威治时间
    Server: BWS/1.1
        服务器名称
    分割符"\r\n"         空行
    网页内容     响应体
   

2、 http响应报文格式组成:    

    1、响应行[版本 状态码 说明\r\n]   必须有,HTTP/1.1 200 OK\r\n
    2、响应头[头名: 头值\r\n]   Content-Type: text/html;charset=utf-8\r\n     Server: BWS/1.1\r\n
    3、空行[\r\n]   "\r\n"
    4、响应体[html文本或者资源数据, 即网页内容]

3、 注意:
    1、响应行必须有
    2、响应行的状态码:
       常见的:
        200: 请求成功
        404: 请求的资源没有存储
        505: 服务器内部发生错误
        307(http1.1)/302(http1.0): 网页发生转移
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值