zoukankan      html  css  js  c++  java
  • Http协议介绍

    浏览器窗口输入网址再回车发生了几件事

    '''
        1 浏览器朝服务端发送请求
        2 服务端接收请求(eg:请求百度首页)
        3 服务端返回相应的响应(eg:返回一个百度首页)
        4 浏览器接收响应,根据特定的规则渲染页面,展示给用户看
        
        浏览器可以充当很多服务端的客户端
            百度,腾讯视频,优酷视频...
        如何做到浏览器能够跟多个不同的服务端之间进行数据交互?
            1 浏览器很牛逼,能够自动识别不同服务端做不同处理
            2 制定一个统一的标准,如果你想要让你写的服务端能够跟客户端之间做正常的数据交互,那么你就必须要遵循一些规则
    '''

    HTTP协议

    '''
        超文本传输协议,用来规定服务端和浏览器之间的数据交互的格式...
        改协议你可以部遵循,但是你写的服务端就不能被浏览器正常访问,你就自己跟自己玩
        你就自己写客户端,用户想使用,就下载你专门的app即可
    
        四大特性
            1.基于请求响应
            2.基于TCP/IP作用于应用层之上的协议
            3.无状态
                不保存用户的信息
                    eg:一个人来个一千次,你都记不住,每次都当他如初见
                由于HTTP是无状态的,所以后续出现了一些专门记录用户状态的技术
                    cookie/session/token...
            4.无/短链接
                请求来一次我响应一次,之后我们两个就没有任何链接和关系了
                
                长链接:双方建立链接之后默认不断开 websocket(后面会讲)
        请求数据格式
            请求首行(用来标识HTTP协议版本,当前请求方式)
            请求头(一大堆k,v键值对)
            空行(这里空白(/r/n)换行,千万不能省略)
            请求体(并不是所有的请求方法都有,get没有post有,存放的是post请求提交的敏感数据)
        响应数据格式
            响应首行(用来标识HTTP协议版本,响应状态码)
            响应头(一大堆k,v键值对)
            空行(这里空白(/r/n)换行,千万不能省略)
            响应体(返回给浏览器展示给用户看的数据)    
        请求方式
            1.get请求
                向服务端要数据
                    eg:输入网址获取对应的内容
            2.post请求
                向服务端提交数据
                    eg:用户登录,输入用户名和密码之后,提交到后端做身份校验
        响应状态码
            用一串简单的数字来表示一些复杂的状态或者描述性信息
                1xx:服务端已经成功接收到了你的数据正在处理,你可以继续提交额外的数据
                2xx:服务端成功响应了你想要的数据(200 OK 请求成功)
                3xx:重定向(当你在访问一个需要登录之后才能看的页面,你会发现自动跳转到登录页面)
                4xx:请求错误
                    404:请求资源不存在
                    403:当前请求不合法或不符合访问资源的条件
                5xx:服务器内部错误(500 server internal error)
        URL
            统一资源定位符(大白话:网址)
    '''

    socket返回数据格式要想让浏览器成功解析,那就得遵循http协议数据格式

    import socket
    
    sock = socket.socket()
    sock.bind(("127.0.0.1", 8080))
    sock.listen(5)
    
    while 1:
        conn, addr = sock.accept()
        data = conn.recv(1024)
        # 协议版本 状态码 提示短语 响应体---此返回数据没有响应头
        conn.sendall(b"HTTP/1.1 200 OK
    
    <h1>hello socket</h1>")
        conn.close()

    学习博客:https://www.cnblogs.com/haiyan123/p/8387770.html

    while True: print('studying...')
  • 相关阅读:
    数据结构笔记
    并查集
    计算两个数的最大公约数和最小公倍数
    行盒
    浏览器兼容性和布局
    Java中HashMap等的实现要点浅析
    关于js异步上传文件
    填充路径时所使用的 “非零环绕规则”
    XP极限编程
    假如森林里有一棵树倒下了
  • 原文地址:https://www.cnblogs.com/xuewei95/p/15123140.html
Copyright © 2011-2022 走看看