【Python】Bottle框架下Python Web开发的跨域访问

上一篇文章中介绍了Python应用Bottle轻量级框架进行Web开发,这次介绍Bottle框架下的跨域访问的问题。

当前台跨域访问时,会无法从后台得到数据,也就是说跨域访问失败。

解决办法如下:

在程序中定义一个函数代码如下:

#!/usr/bin/python
# -*- conding:utf-8 -*-

from bottle import *

#decorator
def allow_cross_domain(fn):
    def _enable_cors(*args, **kwargs):
        #set cross headers
        response.headers['Access-Control-Allow-Origin'] = '*'
        response.headers['Access-Control-Allow-Methods'] = 'GET,POST,PUT,OPTIONS'
        allow_headers = 'Referer, Accept, Origin, User-Agent'
        response.headers['Access-Control-Allow-Headers'] = allow_headers
        if bottle.request.method != 'OPTIONS':
            # actual request; reply with the actual response
            return fn(*args, **kwargs)
    return _enable_cors

@route('/helloworld/:yourwords', methods=['GET', 'POST'])
@allow_cross_domain                                              #在此处加上定义的函数
def hello(yourwords):
	return 'hello world. ' + yourwords

run(host='0.0.0.0', port=8080)

如上代码中所示,在每次调用时,加上该用于跨域的函数即可解决跨域访问的问题。

希望对大家有所帮助。谢谢。

时间: 2024-11-01 10:51:16

【Python】Bottle框架下Python Web开发的跨域访问的相关文章

ASP.NET Web API 跨域访问

情景:http://localhost:8080/的web应用下访问http://localhost:8081下的Action时称为跨域访问. 前提,启动8080web应用实例,再启动8081web应用实例利用ajax去访问. 首先,在自己的Web API应用中,添加NuGet服务包,联机: 然后选择图中的,安装: 在Web API应用的App_Start/WebApiConfig.cs下的 public static void Register(HttpConfiguration config

python bottle框架(WEB开发、运维开发)教程

教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架基础教程:路由(url定义) python bottle 框架基础教程:HTTP 请求方法 python bottle 框架基础教程:模板使用 python bottle 框架基础教程:模板语法 python bottle 框架基础教程:模板继承 python bottle 框架基础教程:静态资源

Flask —— 使用Python和OpenShift进行即时Web开发

最近Packtpub找到了我,让我给他们新出版的关于Flask的书写书评.Flask是一个很流行的Python框架.那本书是Ron DuPlain写的<Flask 即时Web开发>.我决定把“30天学习30种新技术”挑战的第三天花在Flask上.在本文中,我首先将介绍Flask框架的一些基本知识,然后提供一个短篇的书评.同样,我也会把示例应用移植到OpenShift上.对于Flask而言我不是一个完全意义上的新手,我也用它创建过示例应用.对我来说,这是一次很好的温习. 给不了解这一系列文章的读

让python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE等请求

这两天在用python的bottle框架开发后台管理系统,接口约定使用RESTful风格请求,前端使用jquery ajax与接口进行交互,使用POST与GET请求时都正常,而Request Method使用PUT或DELETE请求时,直接爆“HTTP Error 405: Method Not Allowed”错误.而ajax提交的Request Method值DELETE也变成了OPTIONS了. 度娘了好多答案,要么说是浏览器不支持,要么说自己重新封装jquery,还有其他的一些方法...

前端开发用nginx代理服务器解决服务器跨域问题及跨域访问https访问(mac系统下)

前端开发经常遇到一些服务器由于跨域造成访问不了的情况.以前BS模式,前后端都是一个人开发,跨域问题造成的开发阻碍不是很明显,但是现在前端框架欣欣向荣,很多时候变成了CS模式的开发,但浏览器天生的跨域限制,造成了开发,特别是对单独的前端开发人员(不太懂后台开发的人)造成一定开发障碍.还好有nodejs及其一系列前端自动化工具很好的解决了开发时的问题.但今天我要说的用nginx代理来解决这个问题.我觉得很简单!以下都是基于mac系统的操作!先看没有代理时,随便访问网上一个接口, http://web

基于.Net Framework 4.0 Web API开发(5):ASP.NET Web APIs AJAX 跨域请求解决办法(CORS实现)

概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题,特别各种APP万花齐放的今天,API的跨域请求是不能避免的. 在默认情况下,为了防止CSRF跨站的伪造攻击(或者是 javascript的同源策略(Same-Origin Policy)),一个网页从另外一个域获取数据时就会收到限制.有一些方法可以突破这个限制,那就是大家熟知的JSONP, 当然这只是

Web Api 2(Cors)Ajax跨域访问

支持Ajax跨域访问ASP.NET Web Api 2(Cors)的简单示例教程演示 随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细.比如前端项目使用Angularjs的框架来做UI,而数据则由另一个Web Api 的网站项目来支撑.注意,这里是两个Web网站项目了,前端项目主要负责界面的呈现和一些前端的相应业务逻辑处理,而Web Api则负责提供数据. 这样问题就来了,如果前端通过ajax访问Web Api项目话,就涉及到跨域了.我们知道,如果直接访问,

基于Cesium1.26地图API下的GeoServer2.90服务器跨域设置

遇到的问题: 最近基于Cesium来做3D模型的地图开发,在访问自己发布的WMS服务之后,遇到了GeoServer跨域问题. 调用这个WMS服务的时候,浏览器(我用Chrome)开发者工具报错: 控制台提示如下: Font from origin 'http://xxxxxxxxxxxxx' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin'

Web安全技术(3)-浏览器的跨域访问

http://www.blogjava.net/linli/archive/2015/04/22/424584.html 一.浏览器介绍 对于Web应用来说,浏览器是最重要的客户端. 目前浏览器五花八门多得不得了,除了Chrome.IE.Firefox.Safari.Opera这些国外的浏览器外,百度.腾讯.360.淘宝.搜狗.傲游之类的,反正能做的都做了. 浏览器虽然这么多,但浏览器内核主要就以下4种: Trident:IE使用的内核. Gecko:Firefox使用的内核. WebKit:S