铁路工厂新闻网
ad

铁路工厂新闻网

你的位置:主页 > 元宝山新闻网 >

python基于Flask构建Web服务,解决Flask数据请求中的跨域问题

Flask是一款十分轻量级的web服务框架,能够很方便快捷地将本地的python数据程序构建称为一个web服务,进而方便地被调用,在前后端分离的开发过程中,不可避免地会出现前端访问后台服务时出现跨域报错的问题,为了能够正常的进行web服务的访问,解决跨域问题成为了很关键的一环。

python基于Flask构建Web服务,解决Flask数据请求中的跨域问题

说起跨域请求,大家首先想到的就会是设置请求头Access-Control-Allow-Origin: *。这样做的目的就是告诉浏览器接收一切URL访问,flask提供了两种比较常用的跨域报错解决方案,一种就是上面说的一堆头部或者是其他的信息的设置;另一种就是需要借助于第三方的模块flask_cors来完成,下面分别进行说明:

第一种实现方式如下:

def resultTransform(result):
'''
结果数据跨域解决
'''
rst = make_response(result)
rst.headers['Accept'] = '*/*'
rst.headers['Access-Control-Allow-Origin'] = '*'
rst.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
rst.headers['Access-Control-Allow-Headers'] = "Referer,Accept,Origin,User-Agent"
return rst

其中,result是一个接送数据对象,这样转化之后就可以解决跨域的问题了。实际使用中,可能还是会遇上跨域报错的问题,那么这里就需要对头信息进行细化处理了,具体如下:

def resultTransform(result):
'''
结果数据跨域解决
'''
rst = make_response(result)
rst.headers['Accept'] = '*/*'
rst.headers['Access-Control-Allow-Origin'] = '*'
rst.headers['Access-Control-Expose-Headers'] = 'Authorization'
rst.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE,OPTIONS'
rst.headers['Access-Control-Allow-Headers'] = "Referer,Accept,Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin"
return rst

这样就成功解决了。

下面介绍一下第二种的跨域报错解决方式,具体实现如下:

from flask_cors import *
from functools import wraps


app = Flask(__name__)
CORS(app, supports_credentials=True)
CORS(app, resources=r'/*') #r'/*' 是通配符,让本服务器所有的URL 都允许跨域请求

第二种方式的前提是你要先安装:flask_cors,之后才能带入该模块。

上面的两种方式都可以实现跨域数据资源的请求访问,记录一下!

ad
  • 游金地新闻网,莫旗新闻网,无锡新闻第一看点,元宝山新闻网,野三关新闻网,鞍山一中新闻网,汕头新闻网ad5u