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 跨域请求的更多相关文章

  1. flask跨域请求三行代码搞定

    flask跨域请求三行代码就可以搞定.但是请注意几点: 第一:只能返回json格式数据,比如list.ndarray等都不可以 第二:返回的对象必须是是字符串.元组.响应实例或WSGI可调用. pyt ...

  2. flask跨域请求

    跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题 客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的 ...

  3. Flask框架踩坑之ajax跨域请求

    业务场景: 前后端分离需要对接数据接口. 接口测试是在postman做的,今天才开始和前端对接,由于这是我第一次做后端接口开发(第一次嘛,问题比较多)所以在此记录分享我的踩坑之旅,以便能更好的理解,应 ...

  4. CORS跨域请求

    一.问题: 服务器端代码 from flask import Flask from flask import make_response from flask import jsonify app = ...

  5. jquery实现ajax跨域请求

    1.跨域问题: 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 如: 项目一:p1.html <body> ...

  6. django之csrf_exempt解决跨域请求的问题

    一: from django.views.decorators.csrf import csrf_exempt # 获取微信返回的code信息 @csrf_exempt def wechat_auth ...

  7. Laravel中的ajax跨域请求

    最近接触Laravel框架ajax跨域请求的过程中遇到一些问题,在这里做下总结. 一开始发起ajax请求一直报500错误,搜索相关资料后发现Laravel要允许跨域请求可以加入Cors中间件,代码如下 ...

  8. 跨域请求——WebClient通过get和post请求api

    AJAX不可以实现跨域请求,经过特殊处理才行.一般后台可以通过WebClient实现跨域请求~ //get 请求        string url = string.Format("htt ...

  9. 原生js封装ajax,实现跨域请求

    描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...

随机推荐

  1. 应用生命周期终极 DevOps 工具包

    [编者按]本文作者为 Kevin Goldberg,主要介绍了在开发.运营应用的完整生命周期当中,可能用到的 DevOps 工具大集合.文章系 OneAPM 工程师编译整理. DevOps工具包中合适 ...

  2. 前后端分离djangorestframework——序列化与反序列化数据

    我们写好后端的代码,要把数据交给前端的展示的,这个数据以什么类型给前端呢?学到这里,我们已经知道这个数据最好是json字符串才行,因为网络间的传输,只认字符串或者二进制,字符串就是我们的数据,二进制就 ...

  3. Mysql --学习:大量数据快速导入导出

    声明:此文供学习使用,原文:https://blog.csdn.net/xiaobaismiley/article/details/41015783 [实验背景] 项目中需要对数据库中一张表进行重新设 ...

  4. c/c++ 友元基本概念

    友元基本概念: 1,把一个一般函数声明为一个类的友元函数 2,把一个类A的某几个成员函数声明为某个类B的友元函数 3,把一个类A声明为一个类B的友元类. 友元的作用:可以访问类B里所有的成员变量和成员 ...

  5. AIX查看系统版本

    AIX系统版本   1. AIX 主要版本.次要版本.维护级 oslevel -r  lslpp -h bos.rte      2. 确定某个特定的 AIX 级别缺少哪些文件集更新 举例,若要确定 ...

  6. 使用IntelliJ IDEA和Maven管理搭建Web开发环境(以Spring MVC为例)(一)

    前言:原来一直使用MyEclipse,换工作后,新公司使用IDEA,初识IDEA发现,哇,它的快捷键可真多啊,但是一路用下来,觉得非常的好用,特别是利用Maven管理,那简直叫一个爽.当然笔者在使用过 ...

  7. 十大PHP程序员必备工具

    十大PHP程序员必备工具 1.Notepad++ 总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置 ...

  8. 开放标准-http://www.open-std.org/

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/37654877 http://www.op ...

  9. centos7下kubernetes(2。kubernetes---start,重要概念)

    Cluster cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用 Master Master是cluster的大脑,他的主要职责是调度,即决定应用在 ...

  10. UVA120-Stacks of Flapjacks(思维)

    Problem UVA120-Stacks of Flapjacks Accept: 9232  Submit: 38455Time Limit: 10000 mSec Problem Descrip ...