HTTP请求报文:
从浏览器向服务器发 起请求的过程
http:监听80端口
https:监听443端口
请求部分:
① 请求行 GET/POST 请求路径 HTTP/1.1
② 请求头 发送请求时携带的参数
③ 空行
在请求报文中,每行结束后,尾部都要添加\r\n符号
post请求报文:
① 请求行 POST 请求路径 HTTP/1.1
② 请求头 发起请求时携带的参数
③ 空行
④ 请求体 (向服务器端推送的数据,如账号 + 密码 + 验证码)
响应报文说明:
①响应行(response_line) => HTTP/1.1 响应状态码
响应描述
HTTP/1.1 200 OK
200/404 : 200代表服务器端正常响应,404代表资源未找到
OK/Not Found
② 响应头(response_header) ,最少要包含一行,说明使用的服务器名称Server:nginx
可以自己开发,也可以任意命名但是这一行不能少
③ 空行 => 直接通过\r\n表示即可
④ 响应体(response_body) : 你希望返回什么内容给浏览器
静态Web服务器之返回固定页面 代码:
```
```
'''
要用到的知识点:with语句(根据打开的文件,在读取完毕后,自动对其进行关闭操作)
'''
import socket
if __name__ == '__main__':
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
tcp_server_socket.bind(('', 8080))
tcp_server_socket.listen(128)
while True:
conn_socket, ip_port = tcp_server_socket.accept()
recv_client_data = conn_socket.recv(4096)
if len(recv_client_data) > 0:
recv_client_content = recv_client_data.decode('utf-8')
print(recv_client_content)
with open('static/index.html', 'rb') as f:
file_data = f.read()
response_line = 'HTTP/1.1 200 OK\r\n'
response_header = 'Server:PWB1.0\r\nContent-type:text/html; charset=utf-8\r\n'
response_body = file_data
response_data = (response_line + response_header + '\r\n').encode('utf-8') + response_body
conn_socket.send(response_data)
conn_socket.close()