• http


    为什么需要协议,因为服务端和客户端通信需要统一的规则,否则无法正确获取到对方发送的信息.

    没有请求协议,服务端拆不开请求的数据,
    没有响应协议,浏览器拆不开响应的数据.
    其实浏览器和服务端.彼此发的就是一堆字符串,只不过是有个有格式的字符串.

      这个有格式的字符串就是:

    请求首行(一定要有)说明GET请求,请求路径,GET发来的数据,协议类型和办法等等等等 
            General:
                Request URL: https://www.baidu.com/
                Request Method: GET
                Status Code: 200 OK
                Remote Address: 111.13.100.92:443
                Referrer Policy: no-referrer-when-downgrade
                
        请求头(不一定要有.用来描述更多的请求信息,也可以自定义请求头,只要按照规定的格式例如name:alex
            RequestHeaders:
                Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
                Accept-Encoding: gzip, deflate, br
                Accept-Language: zh-CN,zh;q=0.9
                Connection: keep-alive
                Cookie: BAIDUID=BE6E148AD89670194AA8166CC1517874:FG=1; BIDUPSID=BE6E148AD89670194AA8166CC1517874; PSTM=1541348839; BD_UPN=12314753; BDUSS=9vMmdrZ3p
                Host: www.baidu.com
                Upgrade-Insecure-Requests: 1
                User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
                ------------
                ***contentType:说明请求体的编码类型. 默认为urlencodeed,如果是json需要说明contentType:json,
                ***userAgent告诉浏览器请求者的相关信息如windosw操作系统,chrome浏览器,)
                    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
        响应头:
            ResponseHeaders:
                Bdpagetype: 2
                Bdqid: 0x9a4dff190000efd3
                Cache-Control: private
                Connection: Keep-Alive
                Content-Encoding: gzip
                Content-Type: text/html;charset=utf-8
                Date: Sat, 24 Nov 2018 19:20:11 GMT
                Expires: Sat, 24 Nov 2018 19:20:10 GMT
                Server: BWS/1.1
                Set-Cookie: BDSVRTM=327; path=/
                Set-Cookie: BD_HOME=1; path=/
                Set-Cookie: H_PS_PSSID=26523_1463_21088_26350; path=/; domain=.baidu.com
                Strict-Transport-Security: max-age=172800
                Transfer-Encoding: chunked
                X-Ua-Compatible: IE=Edge,chrome=1
            
        请求体:只有post请求才有请求体,get请求没有请求体,get的请求内容放在请求头中.所以contentType在poset请求的时候才有意义.
    View Code

    wsgi模块:  

    wsgi模块功能是拆包和封包

    拆包只拆urlencodeed类型的请求数据, 它把请求数据拆成字典放在request.POST里面,  如果是json格式的就不管, 要自己取reqeust.body获取.再解码反序列化.
    所以请求来的时候先获取数据: request.body = 'json的序列化数据',
    urlencodeed类型--->拆包后放在reques.POST中
    json类型--->不管, 要自己去request.body中取再解码和反序列化.

  • 相关阅读:
    【阿里云产品评测】装甲兵在云路上!
    区间交集问题
    信封嵌套问题
    twoSum问题的核心思想
    队列实现栈|栈实现队列
    设计Twitter 时间线
    如何使用单调栈解题
    二叉堆详解实现优先级队列
    git/SQL/正则表达式的在线练习网站
    我的 Redis 被入侵了
  • 原文地址:https://www.cnblogs.com/dingyunfeng/p/10509047.html
Copyright © 2020-2023  润新知