博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于python的bottle框架跨域请求报错问题的处理
阅读量:6157 次
发布时间:2019-06-21

本文共 1318 字,大约阅读时间需要 4 分钟。

在用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.

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

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

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

 

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

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 博客园博客,原文链接:http://www.cnblogs.com/EmptyFS/p/6138923.html,如需转载请自行联系原作者

你可能感兴趣的文章
Wait Functions
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
jquery用法大全
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
STM32启动过程--启动文件--分析
查看>>