在用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:*,如下图:

通过DEBUG,进入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代码正常了

版权声明:

本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。

发表本编内容,主要是为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:669058475,大家一起探讨。

python bottle 终止返回_关于python的bottle框架跨域请求报错问题的处理相关推荐

  1. ajax 请求_你了解前端出现Ajax跨域请求的原因吗?

    ajax的跨域真正面目 作为一名前端开发人员,谈到Ajax几乎是无人不知无人不晓,每天都会跟Ajax打打交道,特别在如今提倡前后端分离的时代,更是相处甚多,使用过程中碰到最多的一个问题相信应该是请求跨 ...

  2. java 移动页面中的图片上传_移动端上传图片(ajax跨域请求)

    第一次写项目开发经验,望担待. 除了前端以外的事就不叨叨了,下面开始弄干活(两个页面首页.列表页). 项目 开发简述 项目需求:上传图片并展示. 项目地址:项目的链接地址 开发工具:sublime 后 ...

  3. python全局变量有缩进吗_Python全局变量和局部变量的问题 400 请求报错 -问答-阿里云开发者社区-阿里云...

    # coding:utf-8 sum = 5 def add(x, y): print sum sum = x + y if __name__ == '__main__': add(7, 8) 上面的 ...

  4. 跨域会报40几_总结一下跨域的几种情况

    在网站开发中,经常会遇到跨域问题,下面总结一下集中常见的跨域问题. 1. 不同域名属于跨域,如:www.a.com 和www.b.com,另外www.a.com 和www.a.com.cn也属于不同域 ...

  5. 简书python自动化运维_简明Python开发教程(4):网络自动化运维的曙光

    写在前面 本打算自动登陆一台路由器,执行查询配置指令,然后用正则表达式分析,获取该路由器的接口连接关系. 现在由于网络问题,导致无法直接telnet路由器,只能通过其他方式获取配置文件,如读取本地文件 ...

  6. python的知识体系_最新Python知识体系梳理

    课程目录 Day01 Python教程:01.前提概要.wmv Python教程:02.Python基础复习.wmv Python教程:03.Python基础复习.wmv Python教程:04.Py ...

  7. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)...

    python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页) 一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 fro ...

  8. python https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 解决方法

    python爬虫,使用requests库发送https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 解决方法: imp ...

  9. 复制出来 python -m pip install --upgrade pip 升级还是出现一堆红色英文,报错

    复制出来 python -m pip install --upgrade pip 升级还是出现一堆红色英文,报错 升级不成功,出现一堆红色英文解决办法 下载pip包时请求超时,使用默认的镜像源时间过长 ...

  10. jsonp跨域原理_【网站技术解读①】Javascript实现跨域请求

    推荐一个读者做的不错的编程学习网站: 网站:潜安 域名:http://www.qianani.com 另外将会不定期推送近期网站用到的一些技术,讲一些核心原理,今天为第一篇 问题由来: 最近一直在优化 ...

最新文章

  1. Matlab中计算程序运行时间的三种方法
  2. java 手势识别,AndroidStudio:手势识别
  3. 脚手架工程:介绍安装
  4. 使用活动记录执行CRUD
  5. spring mvc文件上传与下载
  6. ios6.0_6.1_苹果手机_evasion_完美越狱
  7. ciscotftp服务器(ciscotftp服务器下载)
  8. STM32--vs1053 WAV录音实现(保存在SD卡)
  9. GPT-3 离通用人工智能有多近?
  10. 张良(?—前189年)
  11. arcgis制作符号
  12. ANSYS软件许可证优化,高效提升工作效率
  13. Cocos Creator 随笔(1)-- 世界坐标,相对坐标转换问题
  14. python count函数时间复杂度_Python之时间复杂度
  15. Linux: 磁盘与文件系统管理
  16. Linux一些基本操作(一)
  17. 如何查询专利费减备案
  18. uni-app中使用unicloud短信验证码(开通、模板报备、使用)
  19. numpy_eye函数
  20. 像外行一样思考,像专家一样实践(读书笔记)

热门文章

  1. 使用命令行搜索你的java 库
  2. Hibernate 查询
  3. cocos2d Labels and Fonts 标签和字体
  4. 205615872 能用来干么?
  5. 高并发 问题怎么解决
  6. webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
  7. 开源图像标注工具labelme的安装使用及汉化
  8. git rebase 和 merge的区别
  9. Mac上编译C++报错
  10. python入门书?