zoukankan      html  css  js  c++  java
  • Web框架本质及Django实例

    Web框架本质

    我们可以这样过理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端。这样我们就可以自己实现Web框架了。

     

    半成品自定义web框架

    import socket
    ks = socket.socket()
    ks.bind(('127.0.0.1',8080))
    ks.listen()
    
    
    
    
    while True:
        conn,addr = ks.accept()
        data = conn.recv(1024)
        conn.send(b'OK')
        conn.close()

    可以说Web服务本质上都是在这十几行代码的基础上扩展出来的。

    用户给浏览器输入网址,会给服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定?你的这个网站是这个规定,他那个网站按照他的那个规定,这样互联网就没法玩了?

    所以,必须有一个统一规定,让大家发送消息、接收消息的时候有个格式依据,不能随便写。

    这个规则就是HTTP协议,以后浏览器发送请求信息也好,服务器回复响应也罢,都要按照这个规则来。

    HTTP协议主要规定了客户端和服务器之间的通信格式,那HTTP协议是怎么规定消息格式的呢?

    让我们首先打印下我们在服务端接收到的消息是什么。

    import socket
    ks = socket.socket()
    ks.bind(('127.0.0.1',8080))
    ks.listen()
    
    
    
    
    while True:
        conn,addr = ks.accept()
        data = conn.recv(1024)     #将浏览器发来的消息打印出来
        print(data)    #jiang
        conn.send(b'OK')
        conn.close()

    输出:

    b'GET / HTTP/1.1
    Host: 127.0.0.1:8080
    Connection: keep-
    alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 
    (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
    Gecko) Chrome/64.0.3282.186 Safari/537.36
    Accept: 
    text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,
    image/apng,*/*;q=0.8
    DNT: 1
    Accept-Encoding: gzip, deflate, 
    br
    Accept-Language: zh-CN,zh;q=0.9
    Cookie: 
    csrftoken=RKBXh1d3M97iz03Rpbojx1bR6mhHudhyX5PszUxxG3bOEwh1lxFpGOgWN9WN93ZH3zv
    
    '

     

  • 相关阅读:
    group having条件找max无记录问题
    Apache Http Server
    Google产品
    AES加密报错Illegal key size
    内网调试微信开发
    试用VSCode
    React的Transaction浅析
    一个webpack,react,less,es6的DEMO
    20151128
    React生命周期浅析
  • 原文地址:https://www.cnblogs.com/xiaole-7890/p/9821511.html
Copyright © 2011-2022 走看看