flask 跨域请求
Flask中,跨域请求主要有两种方式:
1、在响应头信息中添加允许跨域
如下,使用装饰器app.after_request(我这里的web是定义的蓝图),这样在每次请求后,加入header

2、使用第三方插件 flask-cors
参考官方文档:https://flask-cors.readthedocs.io/en/latest/
首先,默认情况下,跨域会导致禁用cookie,还有确保已经做了csrf 攻击处理
1、安装:pip install flask-cors
2、使用:
1)最简单的使用方式:全局配置
使用默认参数初始化Flask-Cors,这样,所有的请求都将被允许跨域
from flask-cors import CORS
app = Flask(__name__)
CORS(app) # 直接将核心对象app作为参数
2)使用 @cross_origin 装饰器配置,这样可以有针对性的指定那些视图函数允许跨域
@cross_origin
def helloWorld():
return "hello world"
3)配置指定路径下的视图函数允许跨域(类似第一种,但是可以指定范围)
CORS(app, resource={r"/api/*" : {"origins" : "*"}})
api路径下的所有视图函数都允许跨域访问
@app.router("/api/hello")
def helloWorld():
return "hello world"
4)单独配置蓝图
web = Blueprint("web", __name__)
CORS(web)
@web.router("/hello")
def helloWorld():
return "hello world"
3、常用CORS参数说明:
| 参数 | 类型 | 对应的Header字段 | 说明 |
| resource | 字典、迭代器或者字符串 | 无 | 全局配置允许跨域的API接口 |
| origins | 列表,字符串或者正则表达式 | Access-Control-Allow-Origin | 配置允许跨域访问的源,* 表示允许所有 |
| methods | 列表,字符串 | Access-Control-Allow-Methods | 配置跨域支持的请求方式,如GET,POST等 |
| allow_headers | 列表,字符串或者正则表达式 | Access-Control-Request-Headers | 配置允许跨域的请求头 |
| support_credentials | 布尔 | Access-Control-allow-Credentials | 是否允许请求发送cookie,false是不允许 |
4、flask-cors日志的使用
logging.getLogger("flask_cors").level = logging.DEBUG
flask 跨域请求的更多相关文章
- flask跨域请求三行代码搞定
flask跨域请求三行代码就可以搞定.但是请注意几点: 第一:只能返回json格式数据,比如list.ndarray等都不可以 第二:返回的对象必须是是字符串.元组.响应实例或WSGI可调用. pyt ...
- flask跨域请求
跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题 客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的 ...
- Flask框架踩坑之ajax跨域请求
业务场景: 前后端分离需要对接数据接口. 接口测试是在postman做的,今天才开始和前端对接,由于这是我第一次做后端接口开发(第一次嘛,问题比较多)所以在此记录分享我的踩坑之旅,以便能更好的理解,应 ...
- CORS跨域请求
一.问题: 服务器端代码 from flask import Flask from flask import make_response from flask import jsonify app = ...
- jquery实现ajax跨域请求
1.跨域问题: 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 如: 项目一:p1.html <body> ...
- django之csrf_exempt解决跨域请求的问题
一: from django.views.decorators.csrf import csrf_exempt # 获取微信返回的code信息 @csrf_exempt def wechat_auth ...
- Laravel中的ajax跨域请求
最近接触Laravel框架ajax跨域请求的过程中遇到一些问题,在这里做下总结. 一开始发起ajax请求一直报500错误,搜索相关资料后发现Laravel要允许跨域请求可以加入Cors中间件,代码如下 ...
- 跨域请求——WebClient通过get和post请求api
AJAX不可以实现跨域请求,经过特殊处理才行.一般后台可以通过WebClient实现跨域请求~ //get 请求 string url = string.Format("htt ...
- 原生js封装ajax,实现跨域请求
描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...
随机推荐
- Linux 自动化部署Rsyslog服务
Linux 自动化部署Rsyslog服务 源码如下: #/bin/bash #该脚本用于自动化部署Ryslog服务配置 #作者:雨中落叶 #博客:https://www.cnblogs.com/yuz ...
- 测试TCP 和 UDP 端口的方法
测试 TCP 端口: telnel IP PORT nc -vz IP PORT 测试 UDP 端口: nc -vuz IP PORT 其中 -u 表示使用 udp 协议来进行测试. -u, --ud ...
- JS 代码中到底加不加分号
背景 在写自动执行函数时 vm.$watch('datas', function() { console.log(vm.datas); }) (function () { console.log('t ...
- Eric Chen Mock Interview
Given an array with integers. Find two non-overlapping subarrays A and B, which |SUM(A) - SUM(B)| is ...
- 《软工实践》第零次作业 - 一些QA
<软工实践>第零次作业 - 一些QA Q&A (1)回想一下你初入大学时对计算机专业的畅想 当初你是如何做出选择计算机专业的决定的? 你认为过去两年中接触到的课程是否符合你对计算机 ...
- VsCode放大缩小
如图:vscode界面突然缩小了 通过快捷键 ctrl+shift+ + 放大 ctrl+shift+ - 缩小
- Interrupt
Interrupt ,给线程发送一个中断信号 给t1线程发送了中断信号,t1对线程的中断信号判断后,跳出循环,线程t1运行结束 public class Demo { public static vo ...
- shzr要填的各种坑
shzr要填的各种坑 如果大家看到我学了什么算法没写总结,或者做了什么题没写题解,欢迎让我填坑. 计划要写的: [ ] 点分治 [ ] 整体二分 [ ] CDQ分治 [ ] Min-Max容斥 [√] ...
- 【转】使用ffmpeg转码的MP4文件需要加载完了才能播放的解决办法
1.前一段时间做了一个ffmpeg转码MP4的项目,但是转出来的MP4部署在网站上需要把整个视频加载完成才能播放,到处找资料,最后找到解决方案记录于此备忘. FFMpeg转码由此得到的mp4文件中, ...
- 【转】联普多WAN口路由器是否可以设置叠加带宽
TP-link联普是全球领先的通讯供应厂商之一,那么你是否知道联普多WAN口路由器可以设置叠加带宽吗?下面是学习啦小编整理的一些关于联普多WAN口路由器是否可以设置叠加带宽的相关资料,供你参考. 联普 ...