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
  • 相关阅读:
    TF-IDF理解及其Java实现
    Java两种方式简单实现:爬取网页并且保存
    PHP网站环境搭配: Apache Http+PHP+Mysql
    String与InputStream相互转换
    Eclipse工程文件夹 红叹号
    查准与召回(Precision & Recall)
    IR的评价指标-MAP,NDCG和MRR
    Dubbo简介2
    SpringCloud 集锦
    dubbox 的各种管理和监管[转]
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/10179756.html
Copyright © 2011-2022 走看看