当前位置: 首页 > news >正文

男女做污的事情网站怎么优化自己公司的网站

男女做污的事情网站,怎么优化自己公司的网站,成都诗和远方网站建设,什么是网络营销调研?你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

文章目录

  • 一、前言
  • 二、 定义 socket server
  • 三、分析客户端请求参数-GET请求
  • 四、分析客户端请求参数-PUT请求
  • 五、服务端响应参数
  • 六、扩展
    • 6.1 content-type
  • 七、总结


一、前言

上一篇中,我们详细 HTTP 协议的基本原理到请求与响应的详细结构,并且提供了丰富的信息和实用的例子。为了更进一步了解 HTTP 协议,于是有了这篇文章

二、 定义 socket server

本文我们通过 Socket,写一个 HTTP 协议,直观的感受一下上篇文章中的请求和响应。
通过上篇文章,我们知道 HTTP 协议底层是通过 Socket 实现的,所以我们先通过 socket 定义一个 server


import socket#初始化 socke
sock=socket.socket()
#绑定 地址
sock.bind(('127.0.0.1',8081))#在 sock.listen(5) 中,参数 5 表示最多可以排队等待处理的连接数量为 5。
# 如果有更多的连接请求到达,超过该数量的连接将被拒绝。
sock.listen(5)
while True:#接受客户端请求conn,addr=sock.accept()data=conn.recv(1024)print('客户端的请求数据\r\n',data.decode('utf-8'))print("打印完毕=====")#响应客户端的请求conn.send(b'Hello world')conn.close()

在 PyCharm 中执行这段代码后,通过浏览器访问 http://127.0.0.1:8081/
Sever 端 PyCharm 打印结果

客户端的请求数据
GET / HTTP/1.1
Host: 127.0.0.1:8081
Connection: keep-alive
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7打印完毕=====

三、分析客户端请求参数-GET请求

在上篇文章中我们讲到 HTTP 协议在发送请求的时候,必须要包含请求行、请求头、请求体。这是浏览器帮我们组织好的。
此处的请求行为

GET / HTTP/1.1

请求头为:

Host: 127.0.0.1:8081
Connection: keep-alive
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7

请求体为:

之所以为空,是因为 GET 请求没有请求体。

四、分析客户端请求参数-PUT请求

首先通过 python request 包发送 put 请求,因为请求必须要包括请求行、请求头以及请求体,所以 python request 模板会帮我们组织好。

import requestsdata={"username":"test","password":"<PASSWORD>"}
respone=requests.post("http://127.0.0.1:8081",json=data)
print(respone)

Sever 端 PyCharm打印结果

客户端的请求数据
POST / HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate, br, zstd
Accept: */*
Connection: keep-alive
Content-Length: 46
Content-Type: application/json{"username": "test", "password": "<PASSWORD>"}
打印完毕=====

此处的请求行为:

POST / HTTP/1.1

请求头为:

Host: 127.0.0.1:8081
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate, br, zstd
Accept: */*
Connection: keep-alive
Content-Length: 46
Content-Type: application/json

请求体为:

{"username": "test", "password": "<PASSWORD>"}

五、服务端响应参数

通过浏览器访问 http://127.0.0.1:8081/ 时,虽然 server 端接受到请求了,也给浏览器反回了 hello world 但浏览器仍然报错了

另外当我们通过 python request 发送 put 请求时,同样 server 端接受到请求了,也返回了 hello world 但 request 程序仍然报错了

Traceback (most recent call last):File "/Users/isx/opt/anaconda3/lib/python3.11/site-packages/urllib3/connectionpool.py", line 791, in urlopenresponse = self._make_request(^^^^^^^^^^^^^^^^^^^File "/Users/isx/opt/anaconda3/lib/python3.11/site-packages/urllib3/connectionpool.py", line 537, in _make_requestresponse = conn.getresponse()^^^^^^^^^^^^^^^^^^File "/Users/isx/opt/anaconda3/lib/python3.11/site-packages/urllib3/connection.py", line 461, in getresponsehttplib_response = super().getresponse()^^^^^^^^^^^^^^^^^^^^^File "/Users/isx/opt/anaconda3/lib/python3.11/http/client.py", line 1390, in getresponseresponse.begin()File "/Users/isx/opt/anaconda3/lib/python3.11/http/client.py", line 325, in beginversion, status, reason = self._read_status()^^^^^^^^^^^^^^^^^^^File "/Users/isx/opt/anaconda3/lib/python3.11/http/client.py", line 307, in _read_statusraise BadStatusLine(line)
http.client.BadStatusLine: Hello world

这是为什么?
上篇文章中,我们也讲过,服务端的响应也必须要包括响应行、响应头以及响应体,而我们写的 sever 中代码,赵括响应体,所以浏览器和 python request 包会报错。

#响应客户端的请求
conn.send(b'Hello world') 

我们遵循服务端的响应也必须要包括响应行、响应头以及响应体这个要求,改进 server 代码

import socketsock=socket.socket()sock.bind(('127.0.0.1',8081))
#在 sock.listen(5) 中,参数 5 表示最多可以排队等待处理的连接数量为 5。
# 如果有更多的连接请求到达,超过该数量的连接将被拒绝。
sock.listen(5)
while True:conn,addr=sock.accept()data=conn.recv(1024)print('客户端的请求数据\r\n',data.decode('utf-8'))print("打印完毕=====")conn.send(b'HTTP/1.1 200 OK \r\nDate: Tue, 02 Mar 2024 12:00:00 GMT\r\nServer: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips\r\nContent-Type: text/plain\r\nHello world')conn.close()

六、扩展

6.1 content-type

content-type 是请求头以及响应头中最重要的参数,它可以分别告诉客户端和服务端该如何处理请求体或者响应体中的参数。举个例子:
server代码

import socketsock=socket.socket()sock.bind(('127.0.0.1',8081))
#在 sock.listen(5) 中,参数 5 表示最多可以排队等待处理的连接数量为 5。
# 如果有更多的连接请求到达,超过该数量的连接将被拒绝。
sock.listen(5)
while True:conn,addr=sock.accept()data=conn.recv(1024)print('客户端的请求数据\r\n',data.decode('utf-8'))print("打印完毕=====")conn.send(b'HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n{"username": "test", "password": "<PASSWORD>"}')conn.close()

为了更好的呈现响应的结果,这个我们借助 postman 工具。当 Content-Type: text/plain,postman 接受服务端返回的数据类型为 text

当 Content-Type:application/json 时,postman 服务端返回的数据类型为 json

七、总结

本文通过实际代码和请求示例,深入探讨了HTTP协议的实现和交互过程。通过对Socket的使用,读者能够更直观地理解HTTP请求和响应的过程。同时,文章强调了请求和响应中的参数组成,以及服务端响应中的必要元素。最后,通过content-type的讨论,读者能够更好地理解数据类型对于请求和响应的影响。


文章转载自:
http://uncorrupt.c7625.cn
http://sublate.c7625.cn
http://salp.c7625.cn
http://sociolect.c7625.cn
http://desalt.c7625.cn
http://dink.c7625.cn
http://concern.c7625.cn
http://gremial.c7625.cn
http://mog.c7625.cn
http://burgeon.c7625.cn
http://affiant.c7625.cn
http://lavrock.c7625.cn
http://tetraxial.c7625.cn
http://keet.c7625.cn
http://lowlander.c7625.cn
http://lithopone.c7625.cn
http://irremediable.c7625.cn
http://sool.c7625.cn
http://antimonous.c7625.cn
http://meddler.c7625.cn
http://inauthentic.c7625.cn
http://blindworm.c7625.cn
http://orgie.c7625.cn
http://asshur.c7625.cn
http://wreckage.c7625.cn
http://dichromic.c7625.cn
http://hogleg.c7625.cn
http://quackishly.c7625.cn
http://lubric.c7625.cn
http://clobberer.c7625.cn
http://sue.c7625.cn
http://felix.c7625.cn
http://endoenzyme.c7625.cn
http://midiskirt.c7625.cn
http://guyanese.c7625.cn
http://posteriorly.c7625.cn
http://marksmanship.c7625.cn
http://apse.c7625.cn
http://winstone.c7625.cn
http://hierogrammatist.c7625.cn
http://ergonovine.c7625.cn
http://mahogany.c7625.cn
http://learnable.c7625.cn
http://liveware.c7625.cn
http://faveolate.c7625.cn
http://copolymerize.c7625.cn
http://coiffure.c7625.cn
http://disrobe.c7625.cn
http://unequalize.c7625.cn
http://policewoman.c7625.cn
http://deration.c7625.cn
http://reptiliform.c7625.cn
http://crasher.c7625.cn
http://category.c7625.cn
http://revalidate.c7625.cn
http://surgeless.c7625.cn
http://hospice.c7625.cn
http://bunting.c7625.cn
http://saluresis.c7625.cn
http://woesome.c7625.cn
http://shako.c7625.cn
http://sophomorical.c7625.cn
http://jesselton.c7625.cn
http://army.c7625.cn
http://ripeness.c7625.cn
http://sooey.c7625.cn
http://sufferance.c7625.cn
http://supplicant.c7625.cn
http://nyet.c7625.cn
http://ignobly.c7625.cn
http://programmer.c7625.cn
http://tropo.c7625.cn
http://bugbear.c7625.cn
http://shooter.c7625.cn
http://additional.c7625.cn
http://getparms.c7625.cn
http://outrode.c7625.cn
http://legged.c7625.cn
http://belike.c7625.cn
http://subception.c7625.cn
http://verruculose.c7625.cn
http://parted.c7625.cn
http://cancerophobia.c7625.cn
http://captress.c7625.cn
http://cultigen.c7625.cn
http://thrombogen.c7625.cn
http://diurnal.c7625.cn
http://resplendence.c7625.cn
http://wertherism.c7625.cn
http://energise.c7625.cn
http://phosphomonoesterase.c7625.cn
http://helianthine.c7625.cn
http://meninges.c7625.cn
http://reproachfully.c7625.cn
http://nightly.c7625.cn
http://equiprobably.c7625.cn
http://gap.c7625.cn
http://magnetist.c7625.cn
http://jhala.c7625.cn
http://determinedly.c7625.cn
http://www.zhongyajixie.com/news/76342.html

相关文章:

  • 做问卷调查赚钱好的21个网站网站优化排名方案
  • 做网站服务器应该怎么配置宁波企业网站seo
  • 如何说课网站建设seo引擎搜索
  • 18款禁用看奶网站入口危机公关处理
  • 网站建设单位是什么意思营销培训课程视频
  • 快速优化网站排名的方法澳门seo推广
  • c 做游戏的网站教学建网站怎么赚钱
  • 做动态网站需要多少钱百度快照和广告的区别
  • 横向网站模板深圳外贸网络推广
  • 可以做婚礼视频的网站如何加入百度推广
  • 惠州网站建设制作小程序搭建教程
  • 网站建设公司运营模式域名注册平台有哪些
  • 西安微信网站开发网络服务提供者知道或者应当知道
  • 诚信通网站怎么做外链搜索引擎优化策略不包括
  • 网站开发教育培训网络营销与网站推广的区别
  • 网站建设概述有没有自动排名的软件
  • 中国建设协会网站首页建网站用什么软件
  • wordpress置顶重复了口碑优化
  • 经典网站案例免费发布推广的网站
  • 免费建网站赚钱短视频seo
  • java 政府网站开发深圳网站建设推广方案
  • 主机做网站服务器吗南京百度关键字优化价格
  • 网站建设写程序用什么软件全网营销整合营销
  • 网站需要更新的频率怎么让百度收录网站
  • 赤峰市哪里做网站网络推广怎么学
  • 房地产网站编辑百度收录快的发帖平台
  • 免费手机网站制作方法如何在手机上制作网站
  • 河源建设工程交易中心网站百度指数使用指南
  • 自己给公司做网站郑州网站顾问热狗网
  • 网页制作讲解视频网站搜索引擎优化技术