Django——web应用__CS;BS,,HTTP协议的认识__请求协议与响应协议__主要版本(版本区别),,响应状态码

Django的补充及弥缺

WEB应用

分为CS 与 BS 架构

MySQL其实也是C/S 架构     C和S装在同一机器上
C/S连接  在cmd窗口中  mysql    -h 127.0.0.1 (写那个人的地址)    -p 3306      -u root   -p password

 

我们可以通过一个人的电脑 访问到另一个人的电脑  但可能报错  原因是:(MySQL不允许远程连接,只允许本地连接)

网络协议:  一般情况都是软件自定制协议--- 基本都是基于TCP

      如果不是HTTP协议  识别不了

----------------------------------------

B/S 架构  浏览器 --服务端

  B/s本质就是C/s

 而B/S 区别于 C/S更新 需要客户自主更新 ----

  B/S更新 只需要 后端更新  --前端是浏览器 ,不需要变 

 

B/S架构软件开发  ---开发S端

使用 socket 写一个  S端  --浏览器就可以访问

import socket

def server_run():
  soc = socket.socket()
  soc.bind(('127.0.0.1', 8008))   

# 如果监听的0.0.0.0 所有人都可访问  但此时只可以本机访问
  soc.listen(5)
  while True:
    conn, addr = soc.accept()
    recv_data = conn.recv(1024)
    print(recv_data)
    # 1 直接在send里写,发送给客户端 http响应的格式
    # conn.send(b'HTTP/1.1 200 OK\r\n\r\n<h1>hello web</h1><img src="https://img2.woyaogexing.com/2022/12/24/a22973058eab2aafa11248a8b6031f5e.jpg"></img>')
          

    

    #2 打开一个html文件,发送给客户端
    # with open('index.html','r',encoding='utf-8') as f:
      # data=f.read()
    # conn.send(('HTTP/1.1 200 OK\r\n\r\n%s'%data).encode('utf-8'))
   

    # 3 动态网页,字符串替换      

    动态时间在html中 加@@

    

 

 

    import time
    now=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print(now)
    with open('index.html','r',encoding='utf-8') as f:
      data=f.read()
    data=data.replace('@@',now)  
    conn.send(('HTTP/1.1 200 OK\r\n\r\n%s'%data).encode('utf-8'))
    conn.close()

  if __name__ == '__main__':
    server_run()

-----------------------------------------------------------------------

  HTTP协议

——是什么?

  HTTP协议 Hyper Text Transfer protocol (超文本传输协议)

——什么作用?

  服务器与本地浏览器之间传输超文本(数据)时要遵守的传送协议

——特点是什么?

   ① 

   基于TCP协议之上的 [  应用层  ] 协议  --是可靠传输

   ②

   基于请求---响应模式 : 必须客户端主动发起;服务端才会响应

     如果实时跟服务端通信 每隔几S发送一次请求  不断地发送(轮询)实现实时聊天

     web版微信

          --实时通信  使用轮询, webscoket 协议

   ③

   无状态保存

    发送多次请求,对于服务端来讲,都是新的

    cookie,session做会话保持

   ④

    无连接 客户端不会一直跟服务端链接

      基于 TCP  有链接

——http请求协议 与响应协议

  请求协议

    请求首行 -- 请求方式 --请求地址     --请求协议版本号 1.1  \r\n

    请求头: key -value形式   \r\n做区分  \r\n\r\n

    请求体 : get请求一般没有请求体,post请求有请求体

    

# 请求首行
GET / HTTP/1.1\r\n

# 请求头
Host: 127.0.0.1:8008\r\n
Connection: keep-alive\r\n
sec-ch-ua: "Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"\r\nsec-ch-ua-mobile: ?0\r\nsec-ch-ua-platform: "Windows"\r\n

Upgrade-Insecure-Requests: 1\r\n
csrftoken=0Eq1YnctKcjVroVgrU0MtwZ7hTMsEAkUUqf9nSyKBJsOtowSZbO4Cb99eCk4y0LH\r\n\r\n

#请求体

 

  响应协议

    响应首行 : HTTP/1.1 200 OK \r\n   ----协议版本 ---响应状态码--响应描述符

    响应头:   

 

 

    响应体: 一般给个html标签

        浏览器中看到的页面,都是响应体的内容

  HTTP有哪些主要版本,版本区别是什么?

    

HTTP/0.9:最初版本的HTTP协议,只支持GET方法,并且没有请求头和响应头的概念,只能传输纯文本。于1991年发布,由Tim Berners-Lee创建,被认为是HTTP的起源。该版本只支持GET请求,并且响应只能是HTML文本
HTTP/1.0:在HTTP/0.9的基础上增加了请求头和响应头的概念,并支持多种HTTP方法,包括GET、POST、PUT、DELETE等。在2000年左右被广泛使用。
HTTP/1.1:在HTTP/1.0的基础上进行了扩展和优化,包括持久连接、管线化、分块传输编码等特性,可以更高效地传输数据。目前仍然是主流。
HTTP/2:在HTTP/1.1的基础上进行了进一步的优化,包括二进制协议、多路复用、服务器推送等特性,能够更快地传输数据。
HTTP/3:是HTTP协议的最新版本,基于QUIC协议进行了重构,具有更快的传输速度、更低的延迟和更好的安全性。HTTP/3于2020年发布,采用基于UDP的QUIC协议,该版本目前正在逐渐被广泛采用。

常用请求头有哪些:

  

 

常用响应头有哪些:

有哪些常用响应状态码:

  1.响应当未处理

  301临时重定向

  302永久重定向

  400操作错误

  500服务端错误

 

 

 

自己的ip地址查询:cmd+R:  ipconfid

可以连接到他人的MySQL需要

1.关闭防火墙

2.知道其 ip

3.链接: MySQL  或者navicate链接

保证而你的Django  他人也能访问   

  需要在 设置文件 setting.py 中

      ALLOWED_HDSTS =[ "*"]  

 

mysql -u root -p'你的密码'

show databases;

use mysql;

show tables;

selsect * from user;

update use set localhost ='%'where user="root"

更简洁 推荐:

在Navicat中创建MySQL数据库

   在其中连接 Mysql数据库 ---找到 user表, 将Host选项里 对应 localhost的值 改为%即可。

 

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

在上述命令中,将username替换为你想要创建的用户名,将password替换为你想要设置的密码。%表示允许任何IP地址进行远程连接,如果你只想允许特定IP地址进行远程连接,可以将%替换为相应的IP地址。

接下来,你需要编辑MySQL服务器的配置文件,以允许远程连接。找到并打开MySQL配置文件(通常是my.cnf或my.ini),在文件中找到以下行:

bind-address = 127.0.0.1

将其注释掉或者将IP地址改为0.0.0.0,保存并关闭文件。

重新启动MySQL服务器,使配置生效。你可以使用以下命令来重启MySQL服务器:

    

            

                

 

posted @ 2023-11-27 16:48  拆尼斯、帕丁顿  阅读(40)  评论(0)    收藏  举报