• 学习Django,http协议,


    学习Django

    http协议

    规则

    '''
    http协议:超文本传输协议
    ①基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
    ②基于请求-响应模式:通讯一定是从客户端开始,服务器端接受到客户端一定会做出对应响应
    ③无状态:协议不对任何一次通讯状态和任何数据做保存
    ③无连接:一次连接只完成一次请求-响应,请求响应完毕后立即断开连接
    '''

    http工作原理(事务)

    # 一次http操作称之为一个事务,工作过程可分为四步
    # 1.客户端与服务端建立连接
    # 2.客户端发生一个http协议指定格式的请求
    # 3.服务器端接收请求后,响应一个http协议指定格式的响应
    # 4.客户端将服务器的响应显示展现给用户

    请求

    '''
    请求行:GET|POST(请求方式) /(请求路径) HTTP/1.1(http协议版本)
    请求头:(了解)
    请求体:GET 请求体放到请求路径后进行拼接 
        POST会在请求行与请求头结束后,以数据包方式单独发送
    
    请求报文
    # 请求行  请求头  请求体
    '''
    POST / HTTP/1.1
        #请求行(必须)
    Host: 127.0.0.1:8001
     
    Connection: keep-alive
    
    Upgrade-Insecure-Requests: 1
    
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
    
    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,en;q=0.8
    
    
    
    usr=abc&pwd=123  #请求体(可选)
    '''

    响应

    '''
    响应行(必须):HTTP/1.1(http协议版本) 200(状态码) ok(状态结束)
                               1打头:消息通知
                               2打头:请求成功
                               3打头:重定向(重新定向)
                               4打头:客户端错误
                               5打头:服务器端错误
    响应头(可选):(了解)
    响应体(可选):具体数据
    注意:响应规则与响应体内容之间还需要一个
    标识分割 响应规则:响应行和响应头
    
    响应报文:
    # 响应行  响应头  响应体
    '''
    HTTP/1.1 200 OK
      #响应行
    Content-type:text/html
      #响应头
    
     
    Login Success #响应体
    '''
    '''
    import socket
    PORT = 4396
    server = socket.socket()
    server.bind(('127.0.0.1',PORT))
    server.listen(5)
    print('服务端启动:http://127.0.0.1:%s'% PORT)
    while True:
        browser,_ = server.accept()
        data = browser.recv(1024).decode('utf-8')
        print(data) #一次请求就会获得一次响应,连接不上会一直请求,所以会产生多个响应,超时结束
    #server
    import socket
    PORT = 4396
    server = socket.socket()
    server.bind(('127.0.0.1',PORT))
    server.listen(5)
    print('服务端启动:http://127.0.0.1:%s'% PORT)
    while True:
        browser,_ = server.accept()
        data = browser.recv(1024).decode('utf-8')
        print(data)
        # 要遵循http协议返回数据:响应行(必须) 响应头 响应体
        browser.send(b'HTTP/1.1 200 OK
    ')  # 响应行(必须),以
    结束
        browser.send(b'Content-type:text/html
    ') # 响应头(可选),服务于响应体
        browser.send(b'
    ')  # 响应规则与响应体内容之间还需要一个
    标识分割
        browser.send(b'normal msg')  # 响应体(可选)
        browser.send(b'<h1>hello wold</h1>') # 响应体(可选)
        browser.close()

      

     

  • 相关阅读:
    js 中将 ‘Thu, 20 Feb 2020 14:21:15 GMT’ 转成 ‘yyyy-mm-dd hh:dd:ss’
    mysql 操作
    flask+bootstrap 页面查询、分页
    bootstrap静态框,调后端接口结果展示
    UndefinedError: 'int' is undefined 解决
    robot framework web自动化-登录
    robot framework 执行web自动化一次后没有log日志,重启后执行一次后也是
    robot framework 数据库增删改查
    robot framework get、post 接口调用
    PCM-FTL
  • 原文地址:https://www.cnblogs.com/lizeqian1994/p/10468762.html
Copyright © 2020-2023  润新知