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

做网站用的符号微网站 合同

做网站用的符号,微网站 合同,wordpress 4.9下载,wordpress 免费主机推荐你好#xff0c;我是 shengjk1#xff0c;多年大厂经验#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注#xff01;你会有如下收益#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么#xff0c;评论或者私信告诉我#xff01; 文章目录 一…你好我是 shengjk1多年大厂经验努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注你会有如下收益 了解大厂经验拥有和大厂相匹配的技术等 希望看什么评论或者私信告诉我 文章目录 一、前言二、 定义 socket server三、分析客户端请求参数-GET请求四、分析客户端请求参数-PUT请求五、服务端响应参数六、扩展6.1 content-type 七、总结 一、前言 上一篇中我们详细 HTTP 协议的基本原理到请求与响应的详细结构并且提供了丰富的信息和实用的例子。为了更进一步了解 HTTP 协议于是有了这篇文章 二、 定义 socket server 本文我们通过 Socket写一个 HTTP 协议直观的感受一下上篇文章中的请求和响应。 通过上篇文章我们知道 HTTP 协议底层是通过 Socket 实现的所以我们先通过 socket 定义一个 server import socket#初始化 socke socksocket.socket() #绑定 地址 sock.bind((127.0.0.1,8081))#在 sock.listen(5) 中参数 5 表示最多可以排队等待处理的连接数量为 5。 # 如果有更多的连接请求到达超过该数量的连接将被拒绝。 sock.listen(5) while True:#接受客户端请求conn,addrsock.accept()dataconn.recv(1024)print(客户端的请求数据\r\n,data.decode(utf-8))print(打印完毕)#响应客户端的请求conn.send(bHello 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;v122, Not(A:Brand;v24, Google Chrome;v122 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/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.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;q0.9,zh-CN;q0.8,zh;q0.7打印完毕三、分析客户端请求参数-GET请求 在上篇文章中我们讲到 HTTP 协议在发送请求的时候必须要包含请求行、请求头、请求体。这是浏览器帮我们组织好的。 此处的请求行为 GET / HTTP/1.1请求头为 Host: 127.0.0.1:8081 Connection: keep-alive sec-ch-ua: Chromium;v122, Not(A:Brand;v24, Google Chrome;v122 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/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.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;q0.9,zh-CN;q0.8,zh;q0.7请求体为 之所以为空是因为 GET 请求没有请求体。 四、分析客户端请求参数-PUT请求 首先通过 python request 包发送 put 请求因为请求必须要包括请求行、请求头以及请求体所以 python request 模板会帮我们组织好。 import requestsdata{username:test,password:PASSWORD} responerequests.post(http://127.0.0.1:8081,jsondata) 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(bHello world) 我们遵循服务端的响应也必须要包括响应行、响应头以及响应体这个要求改进 server 代码 import socketsocksocket.socket()sock.bind((127.0.0.1,8081)) #在 sock.listen(5) 中参数 5 表示最多可以排队等待处理的连接数量为 5。 # 如果有更多的连接请求到达超过该数量的连接将被拒绝。 sock.listen(5) while True:conn,addrsock.accept()dataconn.recv(1024)print(客户端的请求数据\r\n,data.decode(utf-8))print(打印完毕)conn.send(bHTTP/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 socketsocksocket.socket()sock.bind((127.0.0.1,8081)) #在 sock.listen(5) 中参数 5 表示最多可以排队等待处理的连接数量为 5。 # 如果有更多的连接请求到达超过该数量的连接将被拒绝。 sock.listen(5) while True:conn,addrsock.accept()dataconn.recv(1024)print(客户端的请求数据\r\n,data.decode(utf-8))print(打印完毕)conn.send(bHTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n{username: test, password: PASSWORD})conn.close()为了更好的呈现响应的结果这个我们借助 postman 工具。当 Content-Type: text/plainpostman 接受服务端返回的数据类型为 text 当 Content-Type:application/json 时postman 服务端返回的数据类型为 json 七、总结 本文通过实际代码和请求示例深入探讨了HTTP协议的实现和交互过程。通过对Socket的使用读者能够更直观地理解HTTP请求和响应的过程。同时文章强调了请求和响应中的参数组成以及服务端响应中的必要元素。最后通过content-type的讨论读者能够更好地理解数据类型对于请求和响应的影响。
http://www.w-s-a.com/news/881418/

相关文章:

  • 电商网站用php做的吗网站开发流程可规划为那三个阶段
  • flash网站怎么做音乐停止深圳网站建设金瓷网络
  • 哪个网站可以做房产信息群发怎么做国内网站吗
  • 微商城网站建设公司的价格卖磁铁的网站怎么做的
  • 免费做做网站手机平台软件开发
  • 网站单页做301徐州百度网站快速优化
  • 织梦怎么制作手机网站漳州专业网站建设公司
  • 邓州做网站网络优化概念
  • 查看网站开发phonegap wordpress
  • 网站建设和维护待遇怎样c 做的网站又哪些
  • 淮南网站推广网站开发行业前景
  • 丽水市龙泉市网站建设公司江门手机模板建站
  • 做化妆品注册和注册的网站有哪些wordpress加关键字
  • 四川新站优化php笑话网站源码
  • 外贸类网站酷玛网站建设
  • 合肥网站设计建设南宁网站seo推广优化公司
  • 临沂百度网站7x7x7x7x8黄全场免费
  • 海洋牧场网站建设大良网站设计价格
  • 手机端网站关键字排名北京seo公司哪家好
  • 福建建设培训中心网站网站建站服务公司地址
  • 青岛网站优化快速排名企业网址怎么整
  • 做公司网站用什么系统seo搜索排名优化方法
  • dw怎么做网站标题图标做网站重庆
  • 机场建设相关网站公司官网设计制作
  • 大学网站建设的目标技术支持 优府网络太原网站建设
  • wordpress设置密码访问带提示广州做网站优化哪家专业
  • 如何帮人做网站赚钱西安室内设计公司排名
  • 房产网站建设产品网站域名和邮箱域名
  • 网站建设核心优势seo求职信息
  • 网站手册自己在百度上可以做网站吗