• HTTP协议


    1. Http协议特性

    1.1 基于TCP/TP

    HTTP协议是基于TCP/IP协议智商的应用层协议

    1.2 基于请求-响应模式

    HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应

    1.3 无状态保存,短连接

    HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理(短连接)。

    1.4 无连接

    无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。(与之对应的TCP链接)

    2. HTTP请求协议和响应协议

    HTTP协议包含:

    1. 由浏览器发送到服务器遵循的请求协议
    2. 服务器发送数据到浏览器遵循的相应协议

    2.1 请求协议

    2.1.1 请求格式

    2.1.2 请求方式:GET请求和POST请求
    1. GET请求
    • GET提交的数据会放在请求头中,即URL之后,以?分割URL和传输数据,参数之间以&相连,如 EditBook?name=test1&id=123456
    • GET提交的数据大小有限制(因为浏览器对URL长度有限制)
    1. POST请求
    • POST数据一般放在HTTP包的请求体中,但是也可以放在请求头中
    • POST提交数据没有限制
    • GET与POST请求在服务端获取数据方式不同

    2.2 响应协议

    2.2.1 响应格式

    2.2.2 响应状态码

    状态码是当客户端向服务器端发送请求时, 返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现异常了。例如状态码 200 OK,由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:


    2.2.3 示例代码
    1. 服务端.py
    1. # filename: 服务端.py 
    2. import socket 
    3.  
    4. sock=socket.socket() 
    5. sock.bind(("127.0.0.1",8808)) 
    6. sock.listen(5
    7.  
    8. while True
    9. print("server waiting....."
    10. conn,addr=sock.accept() 
    11. data=conn.recv(1024
    12. print("data",data) 
    13.  
    14. # 读取html文件 
    15. with open("login.html","rb") as f: 
    16. data=f.read() 
    17.  
    18. conn.send((b"HTTP/1.1 200 OK %s"%data)) 
    19. conn.close() 
    1. login.html
    1. <!DOCTYPE html> 
    2. <html lang="en"> 
    3. <head> 
    4. <meta charset="UTF-8"> 
    5. <title>Title</title> 
    6. </head> 
    7. <body> 
    8.  
    9. <form action="" method="post"> 
    10. 用户名 <input type="text" name="user"> 
    11. 密码 <input type="password" name="pwd"> 
    12. <input type="submit"> 
    13. </form> 
    14.  
    15. </body> 
    16. </html> 
  • 相关阅读:
    操作系统01_进程和线程管理
    数据库02_字段类型
    鲁滨逊漂流记游戏
    查找数N二进制中1的个数(JS版 和 Java版)
    js中的call、apply
    jQuery对象与Dom对象的相互转换
    jndi配置数据源
    关于JS中变量的作用域-实例
    重写equals()方法时,需要同时重写hashCode()方法
    String与StringBuilder
  • 原文地址:https://www.cnblogs.com/sama/p/9286827.html
Copyright © 2020-2023  润新知