0


01前端导入

【一】前后端介绍

  1. 1.前端:通俗的说就是用户所看到的页面,通过浏览器渲染出来的页面
  2. 2.后端:就是对数据进行逻辑校验和加密等操作,用户看不到的操作

【二】浏览器访问地址全流程

  1. 1.输入网址--》https://www.baidu.com/域名
  2. 2.解析域名----》变成一串数字:端口号,IP地址+端口号,会标记一个独一无二的接入网络的应用程序
  3. 3.IP地址+端口号与服务器(通过三次握手)建立TCP连接
  4. 4.服务端接收请求,响应请求发送数据给客户端
  5. 5.客户端(前端)得到响应数据后,对页面进行渲染后,与服务器断开本次请求连接
  6. 断开的连接不是指TCP的连接
  7. 本次的请求被断开
  8. """注意:用户所看到的界面都加载好了,浏览器(客户端)通常会继续与服务器保持连接(如果连接是持久的),以便处理后续的用户交互(如点击按钮、提交表单等),这些交互通常会触发新的HTTP请求。由于每个HTTP请求都是独立的,并且一旦其响应被接收和处理,该请求就被认为是“完成”的。所以要断开这次请求连接但是tcp链接是没有断开的"""

【三】学习http协议前须知

  1. 1.Mac地址---》网卡地址
  2. 2.广播---》在同一个局域网内有一台主机发送消息,一个局域网内的主机都能收到
  3. 3.ethernet---》以太网协议,Ethernet(以太网)是一种广泛应用于局域网(LAN)的计算机通信技术,它采用了一系列标准和规范,确保不同设备之间的有效通信
  4. 4.IP---》每台计算机接入互联网的地址
  5. 5.port---》标识每台计算机上的应用程序
  6. 6.HTTP协议---》超文本传输协议,是一个应用层协议,用于在万维网上传输超文本和其他数据。规定客户端怎么与服务器交换信息和提供服务
  7. 7.internet--->互联网,多个局域网通过路由器连接在一起组成互联网

【四】HTTP协议(重点)

  1. 1.自己写的服务器和浏览器无法交互,是由于我们的服务器没有遵守HTTP协议去传输数据
  2. 2.HTTP协议特点
  3. 1.无状态---》服务器不会记住请求的任何信息,而且每个请求都是独立的,服务器只会对当前的请求进行响应,服务端无法区分多次请求的客户端是否同一个客户端。
  4. 2.是一种应用层协议
  5. 3.是基于响应和请求的协议---》所有请求都是客户端发起,服务端响应
  6. 4.短连接
  7. 就是每个请求都是独立的,请求得到响应完成后,就会断开请求连接
  8. 5.持久连接
  9. 都是在不断的交换数据,TCP连接是没有断开的

【五】HTTP请求和响应格式

  1. 1)请求格式
  2. 客户端给服务端发送消息应该遵循的数据格式
  3. 请求首行(请求方法 请求路径 协议版本)
  4. 请求头(一大堆k:v键值对)
  5. (换行不能省略)
  6. 请求体(携带敏感数据:密码 身份照号...) 不是一直都有
  7. """
  8. 请求方法 请求路径 http协议版本 <---- http响应的一行内容,也叫请求行
  9. 请求头选项1: 选项值
  10. 请求头选项2: 选项值
  11. ....
  12. 请求头选项n: 选项值
  13. 请求体(可以有多行,前后必有空行)
  14. eg:
  15. 1.发送get请求
  16. GET /get HTTP/1.1
  17. Host: httpbin.org
  18. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
  19. 2.发送post请求
  20. POST /post HTTP/1.1
  21. Host: httpbin.org
  22. Content-Type: application/json
  23. Content-Length: 44
  24. {"name": "xiaoming", "age": 16,"pwd": "123"}
  25. """
  1. 2 响应格式
  2. 服务端给客户端发送消息应该遵循的数据格式
  3. 响应首行(响应状态码 协议版本)
  4. 响应头(一大堆k:v键值对)
  5. (换行不能省略)
  6. 响应体(给浏览器展示给用户看的页面内容)
  7. """
  8. 响应状态码 响应文本提示 协议版本 <----- http响应的第一行内容,响应行
  9. 响应头选项1: 选项值
  10. 响应头选项2: 选项值
  11. ....
  12. 响应头选项n: 选项值
  13. (换行不能省略)
  14. 响应体(服务端返回的正文信息,前后必有空行)
  15. """
(1)请求方法

请求方法描述GET表示客户端希望从服务器中获取下载资源信息POST表示客户端希望上传文件或通过请求在服务器创建资源信息。PUT表示客户端希望修改或更新服务器资源(表示修改全部资源信息,例如数据表的一整个记录)PATCH表示客户端希望修改或更新服务器资源(表示修改部分资源信息,例如数据表的一个记录里面某个属性值)DELETE表示客户端希望删除或废弃服务器资源OPTION表示客户端希望获取服务器所支持的请求方法列表HEAD表示客户端希望获取服务器支持的跨域地址列表

(2)请求头
  1. 对客户端的一些说明

选项描述Host指定客户端请求的服务器的域名和端口号。Content-Type告诉服务器,客户端请求携带的请求体数据的媒体类型信息(MIME类型)User-Agent告知服务器HTTP 客户端网络代理程序的版本信息,一般就是浏览器的版本信息。Authorization告知服务器客户端的Web认证信息。Content-LengthHTTP报文中请求体的大小,以字节为单位。Referer告诉服务器该网页是从哪个页面链接过来。也就是上一页页面的地址。Accept指定客户端能够接收并理解的媒体类型类型(MIME类型),用于表达希望服务端的返回资源格式。Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Pragma指定服务端控制缓存行为。http/1.0以前的字段。Cache-Control指定服务端控制缓存行为。http/1.1以后的字段。Upgrade向服务器请求在当前http协议的基础上升级采用新的某种传输协议以便服务器进行转换Connection指定本次http通信结束以后,是否关闭TCP网络连接。如果设置持久连接,则可以在一次会话中,可以使用同一个TCP连接,进行多次的HTTP通信,提高效率。

(3)常见的MIME格式

描述别名HTML网页json文本text/json纯文本,普通文本xml文档js脚本text/javascriptcss样式png格式图片jpg格式图片gif格式图片gzip格式压缩包doc文档docx文档xls文档xlsx文档pdf文档mp3音频mp4视频

(4)响应状态码

状态码类型描述1xx告诉客户端,本次请求,服务端还在持续处理中,并没有结束。2xx告诉客户端,本次请求,服务端已经接收并成功受理了。3xx告诉客户端,服务端位置发生改变,希望客户端重定向访问跳转新的服务器地址进行请求4xx告诉客户端,本次请求有误,服务器无法处理。5xx告诉客户端,本次请求服务端在处理过程中服务端出错了。

常见状态码

状态码响应信息描述101Switching Protocols服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用升级协议来完成请求。200OK请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。常用于GET,PUT或PATCH201Created请求已成功,请求的资源已经创建成功或更新完成,常用于POST,PUT或PATCH204No Content请求已成功,但是没有任何内容返回。常用于DEELTE301Moved Permanently永久重定向,表示当前客户端请求的资源地址已经永久发生改变。302Move Temporarily临时重定向,表示当前客户端请求的资源地址还存在,但是访问客户端达不到访问资源的条件,所以暂时无法访问。304Not Modified表示本次客户端请求的资源,并非来自服务端,而是本地缓存。如果web项目有做了客户端缓存,一般静态文件都会出现304305Use Proxy被请求的资源必须通过指定的代理才能被访问。307Temporary Redirect请求的资源临时从不同的URI 响应请求。400Bad Request本次请求,报文语义有误或请求参数有误,当前请求无法被服务器理解。401Unauthorized本次请求,需要需要用户验证,但用户并没有提供认证。403Forbidden服务器已经理解请求,但是拒绝执行它。一般是因为没有权限导致的。404Not Found请求失败,请求所希望得到的资源未被在服务器上发现,请求路径不存在。405Method Not Allowed请求行中指定的请求方法不能被用于请求相应的资源。使用了错误的请求方法。500Internal Server Error服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。就是服务端的代码报错了。502Bad Gateway网关宕机,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。一般就是大量访问请求导致服务器瘫痪或宕机了。503Service Unavailable网关过载,由于临时的服务器维护或者过载,服务器当前无法处理请求。504Gateway Timeout网关超时,作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器(例如DNS)收到响应。507Insufficient Storage服务器无法存储完成请求所必须的内容。

【六】服务器模板

  1. import socket
  2. server=socket.socket()
  3. server.bind(("127.0.0.1",8810))
  4. server.listen(5)
  5. sock,addr=server.accept()
  6. while True:
  7. data=sock.recv(1024)
  8. data_str=data.decode()
  9. print(data_str)
  10. # 响应行
  11. respoonse_line="HTTP/1.1 200 OK\r\n"
  12. # 响应头
  13. response_header = "Server:Python20ws/21.1\r\n"
  14. # 空行
  15. response_blank = "\r\n"
  16. # 响应主体
  17. response_body = "<html><h1>HelloWorld!<h1/><html/>"
  18. data1=respoonse_line+response_header+response_blank+response_body
  19. sock.send(data1.encode())
标签: 前端

本文转载自: https://blog.csdn.net/ahuaaaaa/article/details/140252046
版权归原作者 乐安lan 所有, 如有侵权,请联系我们删除。

“01前端导入”的评论:

还没有评论