首页
学习
活动
专区
圈层
工具
发布

Python Web - Flask笔记8

防御CSRF攻击 CSRF攻击的要点就是在向服务器发送请求的时候,相应的cookie会自动发送给对应的服务器,造成服务器不知道这个请求用户发送的还是伪造的,这时候,每当用户访问表单页面的时候,我们可以在网页源代码中添加一个随机字符串叫...csrf_token,在cookie中加入一个相同值的csrf_token字符串,以后给服务器发送请求的时候,必须在body中以及cookie中携带csrf_token,服务器只有检测到cookie中的...这个字典中的值在所有模版中都可以使用。...请求的方法 GET:从服务器上获取资源 POST:在服务器上新创建一个资源 PUT:在服务器上更新资源(客户端提供所有改变后的数据) PATCH在服务器上更新资源(客户端只提供需要改变的属性) DELETE...(比如服务器期望客户端发送某个字段,但是客户端没有发送) 500 internal server error 内部服务器错误,代码错误 67.

1.6K10

带你认识 flask ajax 异步请求

在这个模式中,客户端向服务器发出一个请求,服务器响应一个网页,但与前面的情况不同,并不是所有的页面数据都是HTML,页面中也有部分代码,通常用Javascript编写。...当提供翻译链接并且用户点击它时,我需要将Ajax请求发送到服务器,服务器将联系第三方翻译API。一旦服务器发送了带有翻译文本的响应,客户端JavaScript代码将动态地将该文本插入到页面中。...requests包中的get()方法向作为第一个参数给定的URL发送一个带有GET方法的HTTP请求。...由于客户端将发送数据,因此我决定使用POST请求,因为它与提交表单数据的请求类似。 request.form属性是Flask用提交中包含的所有数据暴露的字典。...这个函数以一种类似于浏览器提交Web表单的格式向服务器提交数据,这很方便,因为它允许Flask将这些数据合并到request.form字典中。

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

    爬虫框架Scrapy(二)

    举个简单的例子: 简单的回顾一下三次握手,客户端向服务器发起请求;服务器向客户端返回响应,同时也发起请求;客户端返回响应,确认连接。这是完整的三次握手。...假设只有两次握手,客户端向服务器发送连接请求,因为网络问题丢包了,根据重传机制客户端再次发送请求,这时没有丢包,然后服务器返回响应,两次握手后建立了连接。...客户端和服务器开始传输数据,但是在交流的过程中如果丢的包又回来了,然后服务器开了一个线程进行连接客户端,同时向客户端发起连接请求,但是这个数据包失效了,客户端不会再发消息了,服务器会一直等待,空耗资源,...定义start_request函数,手动发送post请求,构造post请求的数据,因为默认是get请求。 3. Request类只提供了get请求。...body:接收json字符串,为POST的数据,发送payload_post请求时使用。 5.web程序运行的基本流程: a.客户端发送请求。b.服务器返回响应。

    1K10

    Flask 实现远程日志实时监控

    本文提供了一种实时日志监控的 Python 实现。主要实现以下功能: 抓取远程机器的终端输出到服务器上。 将服务器的日志更新实时显示到客户端网页上。 文中示例基于 Python 以及 Flask。...主要依赖: Flask Redis 及其 Python 客户端 paramiko 分析 总体来说要完成实时监控日志的功能需要分为两个方面: 实时读取远程输出 将输出实时显示到页面上 获取远程输出 那么下面要解决的问题是如何从远程机器上获取终端输出并添加到日志队列中...要实现这种客户端的子更新,大致有三种方法:AJAX, SSE 和 Websocket。 AJAX 就是客户端自动定时发请求,定时间隔事先指定,不是真正的实时。...SSE 其实是一种长连接,只能实现服务器向客户端主动发送消息。 Websocket 是服务器与客户端之间的全双工通道,需要后端的软件支持。 权衡以上三者,SSE 是能满足我的要求的代价最小的选择。...在Flask上,已经有封装好的扩展Flask-SSE,直接安装使用就行了。Flask-SSE是通过 Redis 的 Pubsub 实现的消息队列。然而,只有在连接建立以后发送的数据才能收到。

    3.9K40

    SSE(Server-sent events)技术在web端消息推送和实时聊天中的使用

    是基于http协议,和WebSocket的全双工通道(web端和服务端相互通信)相比,SSE只是单通道(服务端主动推送数据到web端),但正是由于此特性,在不需要客户端频繁发送消息给服务端,客户端却需要实时或频繁显示服务端数据的业务场景中可以使用...在web端消息推送功能中,由于传统的http协议需要客户端主动发送请求,服务端才会响应;基本的ajax轮寻技术便是如此,但是此方法需要前端不停的发送ajax请求给后端服务,无论后端是否更新都要执行相应的查询...在SSE中,浏览器发送一个请求给服务端,通过响应头中的Content-Type:text/event-stream;等 向客户端证明这是一个长连接,发送的是流数据,这时客户端不会关闭连接,一直等待服务端发送数据...,自信的以为在服务器返回数据时只要是response头部添加这三个字段便实现了SSE功能,但是在flask启动自带服务器后,发现浏览器总是触发error事件,并且从新连接。...--发送消息页面,发送给三个不同的channel,点击发送按钮后,对于的channel页面会接收到数据--> 18 $(function () { 19 $("#button")

    5.9K90

    带你认识 flask 用户通知

    01 私有消息 我要实现的私有消息功能非常简单。当你访问用户的个人主页时,会显示一个可以向该用户发送私有消息链接。该链接将带你进入一个新的页面,在新页面中,可以在Web表单中发送消息。...完成了数据库更改后,现在是时候生成新的迁移并使用它升级数据库了: (venv) $ flask db migrate -m "private messages" (venv) $ flask db upgrade...,以便在计数为0时隐藏徽章 07 向客户端发送消息通知 现在剩下的就是增加一种机制,通过这种机制,客户端可以定期接收有关用户拥有的未读消息数量的更新。...实际上有两种方法可以让服务器将这些更新告知客户端,而且你可能会猜到,这两种方法都有优点和缺点,因此选择哪种方法很大程度上取决于项目。在第一种方法中,客户端通过发送异步请求定期向服务器请求更新。...WebSocket是一种不同于HTTP的协议,在服务器和客户端之间建立永久连接。服务器和客户端可以随时向对方发送数据,而无需另一方请求。

    2.5K30

    Flask解决跨域问题

    这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。 XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求。...只要协议、域名、端口有任何一个不同,都被当作是不同的域,之间的请求就是跨域操作。 为什么要有跨域限制 跨域限制主要是为了安全考虑。 AJAX同源策略主要用来防止CSRF攻击。...执行了页面中的恶意AJAX请求代码。...http://evil.com向http://mybank.com发起AJAX HTTP请求,请求会默认把http://mybank.com对应cookie也同时发送过去。...银行页面从发送的cookie中提取用户标识,验证用户无误,response中返回请求数据。此时数据就泄露了。 而且由于Ajax在后台执行,用户无法感知这一过程。

    2K10

    外行学 Python 第十一篇 数据可视化

    数据可视化选用 pyecharts 来完成,通过将 pyecharts 集成到 Flask 中完成数据从数据库到网页可视化显示的过程。...来响应 select 标签的改变事件,通过 ajax 向服务端提交当前选中的生产商,同时从服务器获取该厂商的信息。...在 Flask 的后端需要实现一个 get 方法和一个 post 方法。...get 方法用来获取所有的生产商名称,同时向浏览器发送 html 页面;post 方法用来相应 html 页面中的 ajax 请求,发送该生产商所提供的各类元件的数量。...方法中主要做的是数据的查询,通过生产商名称来查询出该生产商在数据中的 id,从而获取其所提供的所有元件,然后按照 Catalog 中的分类获取其各个分类中的元件数据。

    2.3K30

    Python每日一练(21)-抓取异步数据

    异步加载与AJAX 2. 基本原理 2.1 发送请求 2.2 解析响应 2.3 渲染页面 2.4 Flask框架模拟实现异步加载页面 3. 逆向工程 4....异步加载与AJAX 传统的网页如果要更新动态的内容,必须重新加载整个网页,因为不管是动态内容,还是静态内容,都是通过服务端以同步的方式按顺序发送给客户端的,一旦某些动态内容出现异常,如死循环,或完成非常耗时的操作...2.4 Flask框架模拟实现异步加载页面 本例使用 Flask 框架模拟实现一个异步加载的页面。页面使用模板显示,并且通过 jQuery 向服务端发送请求,获取数据后,将数据显示在页面上。...现在使用 Flask 实现 Web 服务,该服务通过根路由显示 index.html 的内容,使用 /data 响应路由客户端的请求。...通过观察发现,详情页的企业详情数据也是动态加载出来的,该请求是 POST 请求,所有的 POST 请求的 URL 都是一样的,只有参数 id 值是不同。

    3.7K20

    都 0202 年了,你还不会自己编写一些简单 API 服务吗?

    web 框架来搭建一个 web 服务器,这个web 服务器,具有监听路由的功能,通过对指定路由监听来自客户端的请求,接收参数,并处理,然后将处理结果响应给客户端的过程 一、Python Flask 编写简单的...,比如 Nginx 来反向代理 Flask 的所有请求 1.1 搭建 Python Flask 环境 安装 Python 环境 安装 Flask 框架 在 Python 官网下载 Python 的安装包...但是作为前后端交互,一些 get 请求带参处理,post 请求参数处理, JSON 数据传输等等,我们就要学习如下的内容 Flask 动态路由:看第一部分路由的内容 HTTP 请求基本原理,http 响应状态码...) request.values.get('age') :获取GET和POST请求携带的所有参数(GET/POST通用) request.cookies.get('name'):获取cookies信息...,重定向等方式,用 servlet 四大域存储数据,然后返回到前端页面 先给大家分享几个我在学习 Java EE 用到的 ajax 技术 原生 ajax 实现 (这个调试花了我好久时间) 原生 ajax

    1.4K20

    都0202年了,你还不会前后端交互吗

    文章目录 一、后端 API 服务搭建 二、原生 ajax 2.1 不带参数的 get 请求 2.2 带参数的 get 请求 2.3 带参数的 post 请求 2.4 get 请求返回 json 数据 三...get 请求 4.3 fetch 发起post 请求,并带参数 4.4 fetch 发送 get 请求, 返回 JSON 数据 四、更好的封装 axios?...4.1 axios 的基本使用 4.2 axios 常用 API 4.2.1 get 请求 4.2.2 post 请求 出了点小 bug, 为啥后面的 post 请求, Flask 都接收不到 一、...原生的 ajax 是基于 XMLhttpRequest 进行数据传输的,关于什么是 ajax,可以看这两篇解释,以及基本使用 原生 ajax 实现 (这个调试花了我好久时间) 原生 ajax + Java...后端 API 编写 @app.route("/ajax/post",methods=['POST']) def post(): # Flask 获取 post 参数 uname = request.form.get

    2.1K21

    实用,完整的HTTP cookie指南

    AJAX 请求是使用 JS (XMLHttpRequest或Fetch)进行的异步HTTP请求,用于获取数据并将其发送回后端。...在浏览器的控制台中,可以看到请求回来 的数据。另外,在开发者工具的Network选项卡中,可以看到一个名为Cookie的头,这是通过AJAX请求传给后端。...默认情况下,除非服务器设置了Access-Control-Allow-Origin的特定HTTP标头,否则浏览器将阻止AJAX对非相同来源的远程资源的请求。...也就是说,我在浏览器中访问该URL,并且如果我访问相同的URL或该站点的另一个路径(假设Path为/),则浏览器会将cookie发送回该网站。...此模式允许使用安全的HTTP方法(即GET,HEAD,OPTIONS和TRACE)将 cookie发送回去。 POST 请求不会以任何一种方式传输 cookie。

    7.7K40

    测试开发进阶(十五)

    ajax ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。...同步 异步 局部刷新 无刷新 ajax可以实现局部刷新,也叫做无刷新,无刷新指的是整个页面不刷新,只是局部刷新,ajax可以自己发送http请求,不用通过浏览器的地址栏,所以页面整体不会刷新,ajax获取到后台数据...常用参数: url 请求地址 type 请求方式,默认是'GET',常用的还有'POST' dataType 设置返回的数据格式,常用的是'json'格式,也可以设置为'html' data 设置发送给服务器的数据...success 设置请求成功后的回调函数 error 设置请求失败后的回调函数 async 设置是否异步,默认值是'true',表示异步 集合实例 使用ajax发送账号密码信息 首先使用Flask编写一份简单的后台代码...: from flask import Flask, request, jsonify app = Flask(__name__) # 测试数据 user_info = { "user":

    2.1K30

    HTTP cookie 完整指南

    AJAX 请求是使用 JS (XMLHttpRequest或Fetch)进行的异步HTTP请求,用于获取数据并将其发送回后端。...在浏览器的控制台中,可以看到请求回来 的数据。另外,在开发者工具的Network选项卡中,可以看到一个名为Cookie的头,这是通过AJAX请求传给后端。...默认情况下,除非服务器设置了Access-Control-Allow-Origin的特定HTTP标头,否则浏览器将阻止AJAX对非相同来源的远程资源的请求。...也就是说,我在浏览器中访问该URL,并且如果我访问相同的URL或该站点的另一个路径(假设Path为/),则浏览器会将cookie发送回该网站。...此模式允许使用安全的HTTP方法(即GET,HEAD,OPTIONS和TRACE)将 cookie发送回去。 POST 请求不会以任何一种方式传输 cookie。

    5.6K20
    领券