首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

剖析Web技术栈(二)

因为我们是从头开始构建,所以要先实现一个小的Python程序,它打开一个socket连接,接收HTTP请求,并返回对这个HTTP请求响应。...:8080 User-Agent: curl/7.65.3 Accept: */* 服务器一直在while循环中运行代码,如果要终止运行,必须使用Ctrl+C来完成。...到目前为止还不错,这还不是一个HTTP服务器,因为它没有发送任何响应;实际上,你应该会curl接收到一条错误消息,上面写着“curl: (52) Empty reply from server”。...因此,当你在页面的HTML代码提供指向带有或标记的样式表或JS脚本的链接,你也是在指示浏览器为这些文件发送HTTP GET请求。...每当我们在一个网站上进行身份验证,并且我们想访问其他页面,需要服务器记住我们是谁,这意味着要跟踪连接的状态。

49920

说说Python中HTTP常见响应状态码?

答:http协议是超文本传输协议,是用于万维网服务器传输文本到本地浏览器的传送协议,是基于tcp/ip通信协议来传输数据的。...5** 服务器错误,服务器在处理请求过程中发生了错误 下面给大家列举一些常见的状态码: 200 (成功) 服务器已成功处理了请求。...通常,这表示服务器提供请求的网页。 400 (错误请求服务器不理解请求的语法。 401 (未授权) 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。...407 (需要代理授权) 此状态代码与 401(未授权)类似,指定请求者应当授权使用代理。 408 (请求超时) 服务器等候请求发生超时。...500 (服务器内部错误) 服务器遇到错误,无法完成请求。 501 (尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法可能会返回此代码

70230
您找到你想要的搜索结果了吗?
是的
没有找到

Python实现简单的Web服务器

课程知识点 本课程项目完成过程中,我们将学习: HTTP 协议基本原理 简单的 Web 服务器框架 Python 语言的网络开发 Web 服务请求响应及错误处理的实现 CGI 协议的 Python 实现...响应数据也许是本地磁盘上复制来的,也许是程序动态生成的。传输过程如图: HTTP请求就是一段文本,任何程序都能生成一个http请求,就像生成文本一样简单。...HTTP响应的结构类似于请求: status code:状态码。请求成功响应200请求的文件找不到则响应404。 status phrase:对状态码的描述。...(服务器本地文件中读或者程序动态生成) 将数据格式化为请求需要的格式 送回HTTP响应 步骤1,2,6的操作对所有web应用都是一样的,这部分内容Python标准库中的 BaseHTTPServer...怎么解决返回404的问题呢,首先得有返回文件的功能吧。 3.响应静态页面 所以这一步就该处理静态页面了,处理静态页面就是根据请求的页面名得到磁盘上的页面文件并返回。

7200

HTTP 返回状态值详解

当用户点击或搜索引擎向网站服务器发出浏览请求服务器将返回Http Header Http头信息状态码,常见几种如下: 1、Http/1.1 200 OK 访问正常   表示成功访问,为网站可正常访问的状态...文件未变化 305——请求的资源必须服务器指定的地址得到 306——前一版本HTTP中使用的代码,现行版本中不再使用 307——申明请求的资源临时性删除 4xx:请求包含一个错误语法或不能完成 400...  404 - 请求的网页不存在   503 - 服务器超时   下面提供 HTTP 状态码的完整列表。...服务器返回此响应(对 GET 或 HEAD 请求响应),会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。   ...服务器响应与前一个请求相冲突的 PUT 请求可能会返回此代码,以及两个请求的差异列表。   410(已删除)如果请求的资源已永久删除,服务器就会返回此响应

2.9K30

常见的HTTP状态码

另外,当客户端向一个资源的旧URI发送请求,也发送此响应代码404(“Not Found”) 和410(“Gone”) 当客户端所请求的URI不对应于任何资源,发送此响应代码。...这个响应代码200一样,只不过服务器想让客户端知道,有些响应报头并非来自该服务器–他们可能是客户端先前发送的一个请求里复制的,或者第三方得到的。...假如你在浏览器里提交一个HTML表单,并得到响应代码204,那么表单里的各个字段值不变,可以继续修改它们;假如得到响应代码205,那么表单里的各个字段将被重置为它们的初始值。...请求还没有被处理,因为所请求的资源不在本地:它在另一个URI处。客户端应该向那个URI重新发送请求。就GET请求来说,它只是请求得到一个表示,该响应代码跟303没有区别。...这个响应代码404类似,但它提供的有用信息更多一些。这个响应代码用于服务器知道被请求的URI过去曾指向一个资源,该资源现在不存在了的情况。

1.3K30

Django 系列博客(一)

虚拟环境的安装 什么是虚拟环境 对真实的 python 解释器的一个拷贝版本 事实有效,可以独立存在并运行解释 python 代码 可以在计算机上拷贝多个虚拟环境 为什么要使用虚拟环境 保证真实环境的纯净性...本地环境 虚拟环境名 # Mac配置终端,在终端运行虚拟环境 # 在用户根目录下的.bash_profile(没有需手动创建)文件中设置 # alias 终端指令名(env-py3)='/Library...基于 TCP/IP协议基础上的应用层协议,底层实现仍为 socket 基于请求-响应模式:通信一定是客户端开始,服务端接收到客户端一定会做出对应响应 无状态:协议不对任何一次通信状态和任何数据做保存...服务器代码 from socket import socket # 设置响应头(包含响应行) RESP_HEADER = b'HTTP/1.1 200 OK\r\nContent-type:text...请求头要设置支持 html 代码 client.send(b'HTTP/1.1 200 OK\r\n') client.send(b'Content-type:text/html\r\n') client.send

47720

python之web服务器

于是就想把回复的信息单独拿出来,客户端请求什么,会调用什么,这样服务器代码内容不用怎么去管,只需要编写客户端请求的信息对应的返回内容即可。...(ver-0.4)人的需求又在发生变化,客户端不在满足得到的只是静态文件,想要拿到最新的动态信息,比如访问服务器可以得到最新的时间信息,可以得到最新的投票信息等等,这个时候就需要服务器能调用可执行的py...这个服务器的负担就少了很多,只需要写相应的代码即可,这里(ver0.4)不同的是0.4的版本中,一个响应是一个html或者py文件.这个版本中客户端请求都用一个文件编写,一个请求对应一个类,具体请求信息对应相应的函数...ver-0.3 (这个版本,响应内容服务器代码中单独抽离出来了。)...return time.ctime() 运行结果: 但是在这里响应头都还是在服务器里面编写,并没有完全抽离,而且文件编写复杂,每个请求都要写了个文件,内存占用大。

2.6K20

HTTP 响应状态码全解

当我们进行 API 测试,通常首先会检查 API 调用返回的响应的状态码。这就要求我们必须熟悉那些最常见的 HTTP 状态码,以便我们能够更快地识别问题。...在 200 响应中发送的有效载荷取决于请求方法。 201-已创建,状态代码表示请求已完成,并导致创建一个或多个新资源。...404 未找到 404(未找到)状态代码指示源服务器没有找到目标资源的当前表示,或者不愿意公开存在的表示。...502 坏网关 502(坏网关)状态代码表示服务器在充当网关或代理,在尝试完成请求其访问的入站服务器接收到无效响应。...504 网关超时 504(网关超时)状态代码表示服务器在充当网关或代理,没有收到上游服务器的及时响应,该服务器需要访问上游服务器才能完成请求

2.6K30

使用noode.js创建一个服务器

一、简单的静态服务器 1、代码解析 var http = require('http') // http是nodejs里面的一个模块,这个对象能够提供实现底层的方法。...4.5设置status的异常 res.writeHead(404,'hhh'); 当我设置status为404,发现即使是请求成功回送之后,也会出现红色。...// 服务器收到请求后,执行相关函数,解析req对象信息,得到了index.html的地址。...// 服务器根据解析的地址在本地static文件夹下找到对应的index.html文件,读取html里面数据,并把数据放在res内,当成字符串发给服务器。...异步形式的最后一个参数是完成的回调函数。 传给回调函数的参数取决于具体方法,第一个参数会保留给异常。 如果操作成功完成,则第一个参数会是 null 或 undefined。

1.4K20

Web静态服务器

状态码:2xx成功3xx重定向4xx客户端错误5xx服务器错误 HTTP协议用在浏览器和服务器之间 应用层协议 基于TCP 工作模式:一次请求,一次响应。...# 4 解析请求报文 得到用户的资源路径 # 5 读取对应资源 封装在http响应报文中发送给浏览器 response_line = 'HTTP/1.1 200 OK\r\...返回网页资源给web浏览器 web服务器流程: 1 创建 绑定 监听套接字 2 接受连接 3 接收请求报文 4 解析请求报文 得到用户的资源请求路径 5 读取对应资源...返回网页资源给web浏览器 web服务器流程: 1 创建 绑定 监听套接字 2 接受连接 3 接收请求报文 4 解析请求报文 得到用户的资源请求路径 5 读取对应资源...返回网页资源给web浏览器 web服务器流程: 1 创建 绑定 监听套接字 2 接受连接 3 接收请求报文 4 解析请求报文 得到用户的资源请求路径 5 读取对应资源

13.8K40

【愚公系列】2021年12月 Python教学课程 28-Web开发基础

我们点 Network,确保第一个小红灯亮着,Chrome 就会记录所有浏览器和服务器之间的通信: 当我们在地址栏输入 www.sina.com.cn ,浏览器将显示新浪的首页。...步骤 2:服务器向浏览器返回 HTTP 响应响应包括: 响应代码200 表示成功; 响应类型:由 Content-Type 指定; 以及其他相关的 Header; 通常服务器的 HTTP 响应会携带内容...当我们编写一个页面,我们只需要在 HTTP 请求中把 HTML 发送出去,不需要考虑如何附带图片、视频等,浏览器如果需要请求图片和视频,它会发送另一个 HTTP 请求,因此,一个 HTTP 请求只处理一个资源...HTTP 状态码共分为 5 种类型: 下面是常见的 HTTP 状态码: 200 - 请求成功 301 - 资源(网页等)被永久转移到其它 URL 404 - 请求的资源(网页等)不存在 500 -... 当我们用 Python 或者其他语言开发 Web 应用时,我们就是要在服务器端动态创建出HTML,这样,浏览器就会向不同的用户显示出不同的 Web 页面。

74120

Python 实现简易 Web 服务器

状态码是一个数字,用来指示在处理请求所发生的事情: 200 意味着 "一切工作正常",404 意味着 "没有找到",其他状态码也分别有着各自的含义。...这是因为 Web 服务器只是一个程序,当它收到请求,会做它所需要的任何事情: 返回之前请求提到的文件,提供一个随机选取的维基百科页面,或者我们编程让它做的任何事情。...不过当我们回到本节最初提出的任务::教会服务器为一个目录请求,在 index.html 存在返回 index.html, 不存在返回目录内容列表,好处随之出现。...为了将他们编辑源码拯救出来,服务器一般都支持一种叫做公共网关接口(CGI)的机制,它为 web 服务器提供了一个标准的方式来运行外部程序,以响应请求。...完整的 CGI 协议比这更丰富,它允许 URL 中存在参数,服务器会将它们传入正在运行的程序,这些细节并不会影响系统的整体架构… 事情再一次变得复杂。

1.9K20

Python爬虫基础系列:初识Requests库

To:(状态码)r.status_code:HTTP请求的返回状态,200表示成功,404或其它的表示失败。...说到Response,就不得不说到Response对象的属性: r.status_code:HTTP请求的返回状态,200表示连接成功,404表示失败。...r.text:HTTP响应内容的字符形式,即:url对应的页面内容。 r.encoding:HTTPheader中猜测的响应内容编码方式。...r.apparent_encoding:内容分析出的响应内容编码方式(备选)。 r.content:HTTP响应内容的二进制形式。...打个比方,我们在用Requests方法访问某个页面,首先使用r.status_code看是否为200,如果是,则可以通过r.text或r.encoding等查看相关信息;若是404或其它,则是因为某些原因出错或异常

40830

http状态码简介分类及常见状态码含义详解

所以HTTP状态码常用来判断和分析当前Web服务器运行状况。...、并接受,常见的有: 200 OK(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回 201(已创建):请求成功并且服务器创建了新的资源 202(已创建):服务器已经接收请求尚未处理 203...服务器返回此响应(对 GET 或 HEAD 请求响应,会自动将请求者转到新位置 302(临时移动):服务器目前从不同位置的网页响应请求请求者应继续使用原有位置来进行以后的请求 303(查看其他位置...407(需要代理授权):此状态代码与 401(未授权)类似,指定请求者应当授权使用代理 408(请求超时):服务器等候请求发生超时 5xx 表示服务器无法完成明显有效的请求。...例如,服务器无法识别请求方法可能会返回此代码 502(错误网关):服务器作为网关或代理,从上游服务器收到无效响应 503 Server Unavailable(服务不可用):服务器目前无法使用(由于超载或停机维护

22910

flask 教程_python flask快速入门与进阶

接着是函数主体,可以写方法也可以调用其他方法的返回值,最后返回到浏览器上显示的信息 最后我们用 run() 函数来让应用运行本地服务器上。...其中 if __name__ ==’__main__’: 确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行,而不是作为模块导入的时候。...你会发现依赖于一段请求对象的代码,因没有请求对象无法正常运行。解决方案是,自行创建一个请求对象并且把它绑定到环境中。...这告诉 Flask,该页的错误代码404 ,即没有找到。默认为 200,也就是一切正常。 响应 视图函数的返回值会被自动转换为一个响应对象。...Flask 通过闪现系统来提供了一个易用的反馈方式。闪现系统的基本工作原理是在请求结束 记录一个消息,提供且只提供给下一个请求使用。通常通过一个布局模板来展现闪现的 消息。

1.8K40

【收藏】一文读懂网络爬虫!

服务器处理请求服务器读取HTTP请求中的内容,在经过解析主机,解析站点名称,解析访问资源后,会查找相关资源,如果查找成功,则返回状态码200,失败就会返回大名鼎鼎的404了,在服务器监测到请求不在的资源后...所以有各种有个性的404错误页面。 5. 服务器返回HTTP响应,浏览器得到返回数据后就可以提取数据,然后调用解析内核进行翻译,最后显示出页面。...4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求 常见状态代码、状态描述、说明: 200 OK //客户端请求成功 400 Bad Request.../服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503...面对大型网站就会显得性能不足,如果我们可以同时下载多个网页,那么下载时间将会得到显著改善。 我们将串行下载爬虫扩展成并行下载。

1.1K20

输入URL到页面展示到底发生了什么

2、如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求本地DNS服务器本地DNS服务器一般都是你的网络接入服务器提供,比如中国电信,中国移动。  ...6、最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询,可以直接返回结果...比如状态代码200的描述为 ok -- 状态代码:状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。...403 Forbidden 表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因 404 Not Found 请求的资源不存在,例如,输入了错误的URL...所有的同步任务在主线程上执行,形成一个执行栈;异步任务有了运行结果就会在任务队列中放置一个事件;脚本运行时先依次运行执行栈,然后会任务队列里提取事件,运行任务队列中的任务,这个过程是不断重复的,所以又叫做事件循环

1.8K30

输入URL到页面展示到底发生了什么

2、如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求本地DNS服务器本地DNS服务器一般都是你的网络接入服务器提供,比如中国电信,中国移动。  ...6、最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询,可以直接返回结果...比如状态代码200的描述为 ok -- 状态代码:状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。...403 Forbidden 表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因 404 Not Found 请求的资源不存在,例如,输入了错误的URL...所有的同步任务在主线程上执行,形成一个执行栈;异步任务有了运行结果就会在任务队列中放置一个事件;脚本运行时先依次运行执行栈,然后会任务队列里提取事件,运行任务队列中的任务,这个过程是不断重复的,所以又叫做事件循环

1.2K10

前端面试题库系列(2)

JavaScript:首先JavaScript的代码运行在微信App中的,并不是运行在浏览器中,因此一些H5技术的应用,需要微信App提供对应的API支持,而这限制住了H5技术的应用,且其不能称为严格的...200状态码:表示请求已成功,请求所希望的响应头或数据体将随此响应返回 201状态码:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。...301状态码:被请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求响应,会自动将请求者转到新位置。   ...404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。...404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。

64320

Python爬虫利器:Requests库的使用

请求某些服务器需要加上请求头,Requests的请求接口有一个名为headers的参数,只需传给它一个字典即可: headers = {'user-agent': 'my-app/0.0.1'} r...5、响应状态码 我们可以响应状态码得知此次请求的结果,一般200请求成功, Requests还附带了一个内置的状态码查询对象requests.codes: r = requests.get('http...Client Error: NOT FOUND for url: http://httpbin.org/status/404 6、响应头 不只请求会有请求头,响应也有响应头: r = requests.get...7、超时 requests在发送请求可以附带一个timeout参数,如果服务器在timeout秒内没有应答,将会引发一个异常,更精确地说,是在timeout秒内没有基础套接字上接收到任何字节的数据...Requests库也为我们提供了代理的使用,只要在发送请求指定proxies参数即可: proxies = { "http": "http://10.111.1.14:1212", "https

85110
领券