关于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中操作列表之List.pop()方法的使用
May 21 Python
python线程、进程和协程详解
Jul 19 Python
python os用法总结
Jun 08 Python
使用Python实现一个栈判断括号是否平衡
Aug 23 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
Python 单例设计模式用法实例分析
Sep 23 Python
python查看数据类型的方法
Oct 12 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
TensorFlow实现自定义Op方式
Feb 04 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php魔术函数__call()用法实例分析
2015/02/13 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
围观tangram js库
2010/12/28 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
JavaScript起点(严格模式深度了解)
2013/01/28 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python读写zip压缩文件的方法
2018/08/29 Python
详解python中的线程与线程池
2019/05/10 Python
Python面向对象进阶学习
2019/05/21 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python__name__原理及用法详解
2019/11/02 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
性能测试工程师的面试题
2015/02/20 面试题
车间组长岗位职责
2013/12/20 职场文书
银行业务授权委托书
2014/10/10 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技