zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    halcon 2极坐标转笛卡尔坐标
    xmal随笔
    halcon 3焊点查找
    halcon 药丸查找
    halcon 1区域保存生成
    mokee源码下载
    多个DataTable的合并成一个新表
    代码分析工具
    SQL大量数据查询分页存储过程
    sqlite3使用简介
  • 原文地址:https://www.cnblogs.com/fiona-zhong/p/10059564.html
Copyright © 2011-2022 走看看