Flask, Access-Control-Allow-Origin 跨域请求的解决方法

Posted 猎人在吃肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask, Access-Control-Allow-Origin 跨域请求的解决方法相关的知识,希望对你有一定的参考价值。

1、问题描述

由于浏览器受同源策略的限制,在使用 XMLHttpRequest 对象进行跨域请求时,通常会报 No ‘Access-Control-Allow-Origin’ header is present on the requested resource 错误,导致请求失败。

2、解决思路

解决该问题的基本思路是使用 CORS(Cross-Origin Resource Sharing)JSONP ,具体到 Flask 场景R,方法如下。

3、跨域的具体实现

伪代码

from flask import Flask

## 1、导入flask_cors 模块 ,pip install flask_cors
from flask_cors import CORS

def  hello(resp):
	
	data = 
        "message": "hello flask",        
    
    json_str = json.dumps(data, ensure_ascii=False)
    resp = make_response(json_str)
    
	# 2、headers 中进行设置
    resp.headers["Content-Type"] = "application/json;chartset=UTF-8"  # 设置响应头
    resp.headers['Access-Control-Allow-Origin'] = '*'
    resp.headers['Access-Control-Allow-Methods'] = 'GET,POST,OPTIONS' # 如果有其它方法(delete,put等),断续添加
    resp.headers['Access-Control-Allow-Headers'] = 'x-requested-with,content-type'
    return resp


if __name__ == '__main__':
	app = Flask(__name__)
	app.run(debug=True)
	## 3、调用 CORS 
	CORS(app)

以上是关于Flask, Access-Control-Allow-Origin 跨域请求的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从 safari 扩展中调用 python 函数

在Tomcat中添加响应头

跨域请求在 Firefox 中被阻止

怎样解决Script error报错问题

为 Cowboy REST API 启用 CORS

预检响应中不允许使用方法选项