zoukankan      html  css  js  c++  java
  • flask跨域问题

    在Flask开发RESTful后端时,前端请求会遇到跨域的问题。下面是解决方法:

    使用 flask-cors库可以很容易的解决

     
    1
    pip install flask-cors

    两种方法,一个是全局/批量的,一个是单一独立的:

    安全起见,一般来说使用独立的方式会常用一些。

    1.独立方式

    通过给路由添加@cross_origin标识即可

     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from flask import Flask, jsonify
    from flask_cors import cross_origin
     
    @app.route('/upload', methods=['POST', 'OPTIONS'])
    @cross_origin()
    def upload():
      # todo
      result_text = {"result": "True"}
      return jsonify(result_text)

    2.全局方式

    也很简单:

     
    1
    2
    3
    4
    5
    6
    from flask import Flask
    from flask_cors import CORS
     
    if __name__ == '__main__':
      app.run(host='0.0.0.0', threaded=True, debug=True)
      CORS(app)

    这样所有的路由都会支持跨域了。

    3.批量方式

    还有根据路由正则来批量控制等方式,更加灵活,可以查阅官方文档。

    对请求的Response header中加入header

     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @app.after_request
    def af_request(resp):
      """
      #请求钩子,在所有的请求发生后执行,加入headers。
      :param resp:
      :return:
      """
      resp = make_response(resp)
      resp.headers['Access-Control-Allow-Origin'] = '*'
      resp.headers['Access-Control-Allow-Methods'] = 'GET,POST'
      resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
      return resp
  • 相关阅读:
    Fragment生命周期详解
    VS常用快捷键
    转载:C#中的泛型
    Vue 引入代码代码编辑器monacoeditor并自定义语法提示
    Monaco Editor 参数配置详解
    关于uniapp生成证书数字签名(.keystore)文件
    C#上传到FTP Server
    Linux下静态编译glib
    简单谈谈haskell
    hi,大家
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/10179756.html
Copyright © 2011-2022 走看看