在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

flask跨域问题的更多相关文章

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

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

  2. tornado django flask 跨域解决办法(cors)

    XMLHttpRequest cannot load http://www.baidu.com. No 'Access-Control-Allow-Origin' header is present ...

  3. angularjs flask跨域问题 XMLHttpRequest cannot load. No 'Access-Control-Allow-Origin'

    场景,我要来我的server(A)上用api来访问另一个server(B)的问题,如果直接在A上调用B的api,那么就会出现XMLHttpRequest cannot load. No 'Access ...

  4. flask 跨域请求

    Flask中,跨域请求主要有两种方式: 1.在响应头信息中添加允许跨域 如下,使用装饰器app.after_request(我这里的web是定义的蓝图),这样在每次请求后,加入header 2.使用第 ...

  5. flask 跨域问题

    在Flask开发RESTful后端时,前端请求会遇到跨域的问题.下面是解决方法.Python版本:3.5.1 下载flask_cors包 pip install flask-cors使用flask_c ...

  6. flask跨域请求

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

  7. flask跨域

    from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app) @a ...

  8. flask 完成简单查询请求处理,及跨域

    文章大纲 flask通用项目结构 flask 简介 主体代码逻辑 flask 跨域问题的处理 flask 日志 flask 微服务Flask-RESTful 启动服务命令 flask通用项目结构 | ...

  9. 使用nginx解决跨域问题(flask为例)

    背景 我们单位的架构是在api和js之间架构一个中间层(python编写),以实现后端渲染,登录状态判定,跨域转发api等功能.但是这样一个中间会使前端工程师的工作量乘上两倍,原本js可以直接ajax ...

随机推荐

  1. cocos2d-x 3.0 touch事件官方解释

    官方解释 http://www.cocos2d-x.org/docs/manual/framework/native/input/event-dispatcher/zh#_1

  2. python调用nmap进行扫描

    #coding=utf-8 import nmap import optparse import threading import sys import re ''' 需安装python_nmap包, ...

  3. UltraEdit中使用正则表达式-简单用法

    UltraEdit中使用正则表达式 1.认识正则表达式语法: 正则表达式 (UltraEdit Syntax): % 匹配行首 - 表明要搜索的字符串一定在行首. $ 匹配行尾 - 表明要搜索的字符串 ...

  4. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...

  5. jws webservice code

    1.服务器端建立 1.1.创建接口 [java] view plaincopy @WebService  public interface IWebService {      int add(int ...

  6. CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow

    原文链接:http://blog.chinaunix.net/uid-14607221-id-2794642.html 1. PreCreateWindow: Called by the framew ...

  7. iOS 常用的几个第三方库

    网络通信 1.ASIHTTPRequest 这是一个经典的老库,功能完全而强大,但已经停止更新很久了(iOS5.0停止更新,但是我最近看github上这个项目有新改动).在不同iOS版本上略微有一些小 ...

  8. httpd2.4.27rpm包制作

    http2.4.27 rpm包制作1.安装rpm-buildyum -y install rpm-build2.使用普通用户创建spec规则文件su - lxhvim httpd.spec Name: ...

  9. 「LuoguP2434」 [SDOI2005]区间(贪心

    Description 现给定n个闭区间[ai, bi],1<=i<=n.这些区间的并可以表示为一些不相交的闭区间的并.你的任务就是在这些表示方式中找出包含最少区间的方案.你的输出应该按照 ...

  10. Linux网络编程笔记(修订版)

    我的网络编程笔记, 因为最近又要做Linux下的网络编程,故重新修订, 其中一些内容参考了文末的链接及文章 1.   基本概念 2.   基本接口 2.1.   打开一个socket 2.2.   将 ...