01- web应用与https协议
2024-08-25 12:14:19
1、
import socket server = socket.socket()
server.bind(("127.0.0.1", 8800))
server.listen(5) while True:
print('server is waiting...')
conn, addr = server.accept()
data = conn.recv(1024)
print('data:', data)
# conn.send(b'hello luffycity')
conn.send(b'HTTP/1.1 200 OK\r\n\r\nhello luffycity') # 添加http响应头
conn.close()
2
import socket server = socket.socket()
server.bind(("127.0.0.1", 8800))
server.listen(5) while True:
print('server is waiting...')
conn, addr = server.accept()
data = conn.recv(1024)
print('data:', data) # 读取html文件
with open('index.html', 'r') as f:
data = f.read() # 响应报头 + data
conn.send(('HTTP/1.1 200 OK\r\n\r\n%s' % data).encode('utf8'))
conn.close()
3.http请求协议
请求格式
get方式
GET / HTTP/1.1\r\n
Host: 127.0.0.1:8800\r\n
Connection: keep-alive\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n\r\n
请求首行\r\n
请求头\r\n
请求头\r\n
请求头\r\n
请求头\r\n
...\r\n\r\n
post方式
login.html 登录form表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8800" method="post">
username: <input type="text" name="useranme">
password: <input type="password" name="password">
<input type="submit">
</form>
</body>
</html>
POST / HTTP/1.1\r\n
Host: 127.0.0.1:8800\r\n
Connection: keep-alive\r\n
Content-Length: 26\r\n
Pragma: no-cache\r\n
Cache-Control: no-cache\r\n
Origin: http://127.0.0.1:8800\r\n
Upgrade-Insecure-Requests: 1\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Referer: http://127.0.0.1:8800/\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n\r\n useranme=jack&password=2222'
请求首行\r\n
请求头\r\n
请求头\r\n
请求头\r\n
请求头\r\n
...\r\n\r\n 请求体(a=1&b=2) # 注意只有post请求才会有请求体
区别
3、响应协议
# 响应格式 + data
conn.send(('HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n%s' % data).encode('utf8'))
响应码状态
4
最新文章
- CSS命名格式
- linux命令每日一练习-top free
- python基础05 缩进与选择
- 【前端学习】git命令行界面
- exit(-1)或者return(-1)为什么shell得到的退出码是255?
- 【Java】Socket+多线程实现控制台聊天室
- JS中String,Math常用函数
- *++p和*p++的区别
- iOS9关键字的简单使用
- 你真的知道什么是【共享Session】,什么是【单点登录】吗?
- [C++]2-3 倒三角形
- css初识和css选择器
- 20155330 《网络对抗》 Exp8 Web基础
- Beginning SDL 2.0(2) TwinklebearDev SDL 2.0 Tutorial
- django 项目中使用多数据库 multiple databases
- BZOJ3203 SDOI2013保护出题人(三分)
- TImage 显示 资源中 的图片、TResourceStream、资源文件
- HDU 4690 EBCDIC (2013多校 1005题 胡搞题)
- HihoCoder 1033交错和(数位DP第三题)
- 实用符号Alt+小键盘快输
热门文章
- 第四章 数据库和SQL 4-3 数据的更新(UPDATE语句的使用方法)
- [翻译] M13ProgressSuite
- 安全紧急预警-防范新型 Sigrun 勒索病毒
- Inter-System Differencing between GPS and BDS for Medium-Baseline RTK Positioning-12-18
- Java基础知识强化之集合框架笔记80:HashMap的线程不安全性的体现
- hdu 4803 Poor Warehouse Keeper(贪心+数学)
- 【bzoj 4710】 [Jsoi2011]分特产
- 64. [Mcoi2018]终末之诗(上)
- P2278 [HNOI2003]操作系统
- 《信息安全技术》实验二 Windows口令破解