zoukankan      html  css  js  c++  java
  • HTTP原理

    cs模式
    bs模式browser --- server

    Http协议

    超文本传输协议
    是无状态的,每一次的请求是和上一次的没有关系

    http协议包括两部分:
    请求协议:客户端(浏览器)发给服务端
    响应协议: 服务端发送给客户端(浏览器)

    URL:统一资源定位符,就是一个网址协议名://域名:端口/路径

    请求协议

    • 1 请求首行 GET /favionico HTTP1.1(HTTP协议的版本)

    • 2 请求头信息
      referer:信息中包含数据的真实地址 容易盗链
      Cookie:(里面是键值对)
      因为http是无状态的协议,所以通过cookie保存信息,下一次登录的时候发送给服务端

    • 3 空行

    • 4 请求体(请求数据 post数据)--getget放在url地址后面)不存在 ,默认的是post

    GET请求

    HTTP的默认请求是GET

    • 没有请求体
    • 数据大小限制 1K
    • GET会暴露在地址栏中
    GET 操作
    • URL
    • 点击超链接
    • 表单默认,但是通常修改成POST

    POST请求

    • 请求中存在中文,会使用URL编码

    响应协议

    响应首行(解析HTTP协议的版本)
    响应头信息
    空行
    响应体

    200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
    404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
    500:请求资源找到了,但服务器内部出现了错误;
    302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
    304:重定向

    Last-Modified 是index.html的最后修改时间

    HTML

    HTTP/1.1 201 OK

    import socket
    
    
    def main():
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.bind(('localhost', 8081))
        sock.listen(5)
    
        while True:
            print("server is working.....")
            conn, address = sock.accept()
    
            request = conn.recv(1024)
            with open("index.html", encoding="utf-8") as f:
                data = f.read()  # data 读取的是str数据
    
            conn.sendall(bytes("HTTP/1.1 201 OK
    
    %s" % data, "utf-8"))  # 发送的是字节数据
            # conn.send(b"HTTP/1.1 201 OK
    
    %s" % data.encode("utf-8"))
            # conn.sendall(b"HTTP/1.1 201 OK
    
    %s" % data.encode("utf-8"))
            # conn.sendall(bytes("%s" % data, "utf-8"))
            conn.close()
    
    
    if __name__ == '__main__':
        main()
    
    
  • 相关阅读:
    laravel 解决保存Emoji 表情问题
    下载微信头像下载不了
    微信公众号开发遇到simplexml_load_string 未定义
    部署php的正确姿势
    ubuntu 安装 mysql 的正确姿势
    laravel 部署 前后端分离
    nwjs 解决手指可滑动问题
    Java8新特性Optional、接口中的默认方法与静态方法
    Java设计模式百例
    一位资深程序员大牛给予Java初学者的学习路线建议
  • 原文地址:https://www.cnblogs.com/Python666/p/6856744.html
Copyright © 2011-2022 走看看