关于python的bottle框架跨域请求报错问题的处理方法


Posted in Python onMarch 19, 2017

在用python的bottle框架开发时,前端使用ajax跨域访问时,js代码老是进入不了success,而是进入了error,而返回的状态却是200。url直接在浏览器访问也是正常的,浏览器按F12后会发现下面这个错误提示

XMLHttpRequest cannot load http://192.168.0.118:8081/get_mobile_number/?id=1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

通过搜索引擎查询错误,会发现几乎查找出来的答案都说是跨域问题,只需要在主文件的代码中添加下面就可以了,国外的网站好多解决方案都是这样说明

@hook('after_request')
def enable_cors():
 response.headers['Access-Control-Allow-Origin'] = '*'

而事实上是按找出来的解决方法添加后还是出现错误,查看浏览器输出的http头并没有看到我们刚刚增加的Access-Control-Allow-Origin:*,如下图:

关于python的bottle框架跨域请求报错问题的处理方法

通过DEBUG,进入bottle的源码中查看

关于python的bottle框架跨域请求报错问题的处理方法

这个问题我测试过在python2与python3对应的bottle框架中都存在这种问题,我们将它改为:

class HTTPResponse(Response, BottleException):
  def __init__(self, body='', status=None, headers=None, **more_headers):
    super(HTTPResponse, self).__init__(body, status, headers, **more_headers)
  def apply(self, response):
    response._status_code = self._status_code
    response._status_line = self._status_line
    if self._headers:
      if response._headers:
        response._headers.update(self._headers)
      else:
        response._headers = self._headers
    response._cookies = self._cookies
    response.body = self.body

 再运行代码就可以看见ajax代码正常了

关于python的bottle框架跨域请求报错问题的处理方法

以上所述是小编给大家介绍的关于python的bottle框架跨域请求报错问题的处理方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python操作xml文件详细介绍
Jun 09 Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 Python
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
numpy中的高维数组转置实例
Apr 17 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
seek引发的python文件读写的问题及解决
Jul 26 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python函数声明和调用定义及原理详解
Dec 02 Python
Python批量安装卸载1000个apk的方法
Apr 10 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 #Python
解决Python requests 报错方法集锦
Mar 19 #Python
python字符串str和字节数组相互转化方法
Mar 18 #Python
Python执行时间的计算方法小结
Mar 17 #Python
python django事务transaction源码分析详解
Mar 17 #Python
Python自动生产表情包
Mar 17 #Python
Python实现的异步代理爬虫及代理池
Mar 17 #Python
You might like
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
JavaScript 基本概念
2015/01/20 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
基于JavaScript实现本地图片预览
2017/02/08 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
原生js实现轮播图特效
2020/05/04 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python实现最常见加密方式详解
2019/07/13 Python
简单分析python的类变量、实例变量
2019/08/23 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
Python实现EM算法实例代码
2020/10/04 Python
python之随机数函数的实现示例
2020/12/30 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
经典公益广告词
2014/03/13 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
开平碉楼导游词
2015/02/06 职场文书
校园安全教育心得体会
2016/01/15 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python