Flask——跨域问题解决


背景:最近在使用Flak-restful+Vue来做一个app,将Vue打包在了一个安卓的壳子里面。但是这期间出现了一个比较有意思的问题——跨域。做后端开发的兄弟应该在前后端的分离项目中应该对这个问题司空见惯了。但是这个问题还是有一定的讨论意义,所以还是拿出来说一下。

1.CORS

  这个组件在很多框架的跨域问题使用中都用的到,比如django里面自带了这个中间件,需要的朋友可以百度一下,用起来很方便。flask使用的时候代码如下。

  首先得安装这个包,在flask中是没有自带的。

pip install flask_cors

  之后代码中使用如下:

1 from flask_cors import CORS
2
3 app = Flask(__name__)
4 CORS(app, supports_credentials=True)
5
6 if __name__ == "__main__":
7     app.run()

  当然了,如果不使用Flak-restful的话可以写一个中间件,对响应头进行操作,在这里就不进行过多描述了。

2.JSONP

  很多人在django restful-framework-api中习惯了使用jsonp的,但是flask自带的jsonify这个东西对于跨域而言好像并没有什么作用,因此这条路可以别想了。

3.配置options请求

  ***先说明这种方式是要和方法1一起使用的***

  众所周知在处理跨域的时候会先发一个options请求给服务端,这个请求可以说是一个“预请求”吧,用于探测后续真正需要发起的跨域 POST、PUT、PATCH 请求对于服务器来说是否是安全可接受的,因为跨域提交数据对于服务器来说可能存在很大的安全问题。

  所以在这里必须设置一下options请求来解决跨域问题。

1 class TabrResource(Resource):
2
3     def options(self):
4         return {'Allow': '*'}, 200, \
5                {'Access-Control-Allow-Origin': '*',
6                 'Access-Control-Allow-Methods': 'HEAD, OPTIONS, GET, POST, DELETE, PUT',
7                 'Access-Control-Allow-Headers':
8                     'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild',
9                 }

  这里我写了一个类,继承了Resource这个类,之后重写了options方法。通过接口的类继承TabrResource,所有的接口的类都会有一个options方法,来应对跨域请求。这个亲测有效。

*最后的最后说明一下,在Vue编译到安卓程序里面以后相当于是安卓程序里面嵌入了一个浏览器。可以配置一下把所有的跨域请求全部不拦截,直接放行。

转载于:https://www.cnblogs.com/XiaoBoya/p/11295284.html

Flak——跨域问题解决相关推荐

  1. ssm把图片保存到项目中_项目中的图片跨域问题解决方式

    现象 首先,在生产环境中,由于进行编辑图片时,将图片回显到ReactCrop组件中进行可裁剪编辑,然而回显时,需要将图片转化为base64的格式或者blob对象, 此时需要将图片次绘制成canvas进 ...

  2. Tomcat中的字体请求跨域问题解决

    Tomcat中的字体请求跨域问题解决 原作者地址: https://blog.csdn.net/u011974399/article/details/79990505 修改tomcat的web.xml ...

  3. django-vue-admin前端设置后台接口地址为127.0.0.1产生跨域问题解决办法

    django-vue-admin前端设置后台接口地址为127.0.0.1产生跨域问题解决办法: 不能设置成127.0.0.1,设置成节点的ip地址即可解决. 应该是脚手架本身存在问题导致的.

  4. ajax跨域问题解决(spring boot)

    ajax跨域问题解决(spring boot) 参考文章: (1)ajax跨域问题解决(spring boot) (2)https://www.cnblogs.com/cosyer/p/6589874 ...

  5. vue中axios访问Java后端跨域问题解决

    vue中axios访问Java后端跨域问题解决 参考文章: (1)vue中axios访问Java后端跨域问题解决 (2)https://www.cnblogs.com/soinve/p/9295009 ...

  6. WebSocket跨域问题解决

    WebSocket跨域问题解决 参考文章: (1)WebSocket跨域问题解决 (2)https://www.cnblogs.com/goeasycloud/p/9389360.html 备忘一下.

  7. 前后端分离框架跨域问题解决

    1. 跨域问题的产生 前端向后台请求,但是后台与前台不是同一个域中(域名,端口,协议任一不同就不是同一个域),那么就会产生跨域问题. 2.跨域问题解决 2.1 传统的项目那么可以直接在Filter过滤 ...

  8. Vue 跨域问题解决

    Vue 跨域问题解决 vue框架目录: ProxyTable pathRewrite:是使用proxy进行代理时,对请求路径进行重定向以匹配到正确的请求地址,其中^是正则中限定开头,则是/api为开头 ...

  9. 小程序适配H5端跨域问题解决

    小程序本身自带有解决跨域的方法,但是当小程序运行到浏览器的时候,由于写小程序的时候并没有处理跨域,所以H5端做相同的axios请求,小程序没有报错,H5端却会报错 解决方法: 我们需要到manifes ...

最新文章

  1. 根据条件查询某条记录的条数_「性能与架构」MySQL 8 查询优化新工具 Explain Analyze...
  2. log4j日志文件配置
  3. .Net Core应用框架Util介绍(二)
  4. linux修改栈指针x86,x86-堆栈指针未填充16时libc的system()导致分段...
  5. [PHP] 日期与时间
  6. codefores 204E. Little Elephant and Strings(后缀数组,RMQ求lcp,二分,主席树)
  7. 原子操作:CAS、TAS、TTAS、FAA浅析
  8. 十分钟带你认识Node.js
  9. 数字序号转为字母序号
  10. 吴恩达授课,斯坦福CS230深度学习课程资源开放
  11. [Usaco2010Hol]Dotp
  12. 【托业】【语法题】笔记
  13. python画散点图<plt.scatter() 和sns.scatterplot()>
  14. 导出excel时,弹出的下载窗口一闪而过
  15. Android反编译工具与实践
  16. 关于mysql彻底卸除问题
  17. ios开发 c语言打包.a文件,【转】IOS静态库a文件制作流程
  18. TestDirector域或工程用户的管理
  19. 数据库 - 数据查询
  20. 如何学分子模拟的软件

热门文章

  1. 关于iOS tableview自定义区头
  2. ubuntu20.02安装显卡驱动常见问题总结
  3. LQA: Time of day is written with a “dot” not a “colon” (13.14 not 13:14)
  4. 哔哩哔哩2020校园招聘算法笔试卷(二)
  5. 安卓高仿京东淘宝的筛选功能,全网最简单方便
  6. winscp 进入mysql命令_WinSCP命令行操作
  7. 使用Jupyter Notebook远程连接服务器
  8. 成就你一生的100个哲理71-80
  9. 钱文品 | 《Redis在海量数据和高并发下的优化实践》主题分享
  10. 亚马逊站外引流如何做?解析厨电大卖的高曝光秘诀