http服务器三:自己写一个服务器实现转发功能

一:写一个服务器socket与浏览器进行交互

服务器收数据

server.py

from socket import *


server_socket = socket(AF_INET,SOCK_STREAM)

server_socket.bind(("127.0.0.1",10012))

server_socket.listen(128)

client_socket,client_address = server_socket.accept()

recv_data = client_socket.recv(1024)


print("接收的数据是",recv_data.decode("gbk"))


# 浏览器发送 127.0.0.1:10012后打印

接收的数据是 GET / HTTP/1.1
Host: 127.0.0.1:10012
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

服务器给浏览器发数据

假如我访问的是 127.0.0.1:10012?a=1,server的socket怎么接收到这个参数呢?

postman访问服务端打印的数据

GET /?a=1 HTTP/1.1
User-Agent: PostmanRuntime/7.24.1
Accept: */*
Cache-Control: no-cache
Postman-Token: 8cd656c8-5e2b-47e8-bac7-7d551fd20e48
Host: 127.0.0.1:10012
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

浏览器访问服务端打印的数据

GET /?a=1 HTTP/1.1
Host: 127.0.0.1:10012
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: none
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

服务器获取到查询参数

# TODO

原文地址:https://www.cnblogs.com/meloncodezhang/p/12795780.html