Python学习之路—2018/6/14
程序员文章站
2022-03-31 12:38:27
Python学习之路—2018/6/14 1.浏览器与服务器 浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程。 2.简单的web应用程序 index.html 接下来用浏览器访问100.113.14.43:8080 3.请求协议 请求格式 get与post区别 get主要 ......
Python学习之路—2018/6/14
1.浏览器与服务器
浏览器向服务器发送请求的过程为请求过程,服务器向浏览器响应的过程为响应过程。
2.简单的web应用程序
import socket sock = socket.socket() sock.bind(("100.113.14.43", 8080)) sock.listen(5) with open("index.html", "r") as f: # 先将样式写入html文件中,然后再读取发送给浏览器 content = f.read() while True: print("server starting...") conn, addr = sock.accept() data = conn.recv(1024) print("data:", data) conn.send(("HTTP/1.1 200 OK\r\n\r\n%s" % content).encode("utf8")) # http协议格式 conn.close() sock.close()
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>Hello World</h1> <img src="https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike150%2C5%2C5%2C150%2C50/sign=a102dc900f24ab18f41be96554938da8/8b82b9014a90f60380e9a5f13f12b31bb051ed2f.jpg"> </body> </html>
接下来用浏览器访问100.113.14.43:8080
3.请求协议
请求格式
get与post区别
- get主要用于获取数据库数据,当对数据库数据进行更新时使用post
- get无请求体,提交的数据放入url后面,通过?分隔,参数之间通过&连接,例如100.113.14.43:8080/gyq?name=gyq&age=22;post提交的数据存放在请求体中
-
由于url长度有限,所以get提交的数据大小有限制;post提交数据大小没有限制
响应协议
响应格式
响应状态码
类型 | 原因 | |
---|---|---|
1XX | Information(信息) | 请求正在处理 |
2XX | Success(成功) | 请求处理完毕 |
3XX | Redirection(重定向) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误) | 服务器无法处理请求 |
5XX | Server Error(服务器错误) | 服务器处理请求错误 |
from wsgiref.simple_server import make_server def appliaction(environ, start_response): # environ:按照http协议解析数据 # strat_response:按照http协议组装数据 path = environ.get("PATH_INFO") start_response("200 OK", []) with open("index.html", "rb") as f: data1 = f.read() with open("login.html", "rb") as f: data2 = f.read() if path == "/index": return [data1] elif path == "/login": return [data2] else: return [b"<h1>哈哈哈</h1>"] httpd = make_server("", 8090, appliaction) print("server starting..") # 开始监听 httpd.serve_forever()