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

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

91488a4aae93d0b4223ae8c3dbf6eb3e.png

说起跨域请求,大家首先想到的就会是设置请求头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,之后才能带入该模块。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值