Flask解决跨域的问题示例代码


Posted in Python onFebruary 12, 2018

跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题

客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的跨域 POST 请求对于服务器来说是否是安全可接受的,因为跨域提交数据对于服务器来说可能存在很大的安全问题

请求头 Access-Control-Request-Method 用于提醒服务器在接下来的请求中将会使用什么样的方法来发起请求

Access-Control-Allow-Method 和 Access-Control-Allow-Origin 分别告知客户端,服务器允许客户端用于跨域的方法和域名

示例

下载flask_cors 包

pip install flask-cors

使用flask_cors的CORS,代码示例

from flask_cors import *

app = Flask(__name__)
CORS(app, supports_credentials=True)

以下是Flask-CORS 的官方文档链接

http://flask-cors.readthedocs.io/en/latest/

实现

现在我们看看解决问题的实际案例

from flask_cors import CORS
app = Flask(__name__,)
# r'/*' 是通配符,让本服务器所有的URL 都允许跨域请求
CORS(app, resources=r'/*')
# 上传文件
@uploadFiles.route('/upload', methods=['POST'])
def uploadFile():
  result_text = {"statusCode": 200,"message": "文件上传成功"}
  response = make_response(jsonify(result_text))
  response.headers['Access-Control-Allow-Origin'] = '*'
  response.headers['Access-Control-Allow-Methods'] = 'OPTIONS,HEAD,GET,POST'
  response.headers['Access-Control-Allow-Headers'] = 'x-requested-with'
  return response

使用POSTMAN请求

Flask解决跨域的问题示例代码

遇到的问题

由于项目中路由是多级路由,通过主路由跳转到子路由,一开始的时候,允许跨域的配置在上传文件的子路由中进行设置,发现OPTIONS请求响应值中并没有返回预期的头文件,将跨域设置在主路由中设置即可

总结

以上就是本文关于Flask解决跨域的问题示例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python用GET方法上传文件
Mar 10 Python
Python实现大文件排序的方法
Jul 10 Python
Linux CentOS7下安装python3 的方法
Jan 21 Python
详解python3中tkinter知识点
Jun 21 Python
python 批量修改/替换数据的实例
Jul 25 Python
Python OpenCV实现视频分帧
Jun 01 Python
Python坐标线性插值应用实现
Nov 13 Python
python3实现绘制二维点图
Dec 04 Python
Django 再谈一谈json序列化
Mar 16 Python
浅析Python 条件控制语句
Jul 15 Python
python能做哪些生活有趣的事情
Sep 09 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
tensorflow实现对图片的读取的示例代码
Feb 12 #Python
python中数据爬虫requests库使用方法详解
Feb 11 #Python
python 接口测试response返回数据对比的方法
Feb 11 #Python
使用Python读取大文件的方法
Feb 11 #Python
python脚本作为Windows服务启动代码详解
Feb 11 #Python
分析Python读取文件时的路径问题
Feb 11 #Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 #Python
You might like
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
Yii2下点击验证码的切换实例代码
2017/03/14 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
用Python3创建httpServer的简单方法
2018/06/04 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Django接收自定义http header过程详解
2019/08/23 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
创业计划书中要认真思考的问题
2013/12/28 职场文书
活动主持人开场白
2015/05/28 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
分析SQL窗口函数之排名窗口函数
2022/04/21 Oracle