Skip to content

Instantly share code, notes, and snippets.

Forked from richard-flosi/
Created October 29, 2016 04:28
What would you like to do?
Bottle with Cross-origin resource sharing (CORS)
Example of setting up CORS with
from bottle import Bottle, request, response, run
app = Bottle()
def enable_cors():
You need to add some headers to each request.
Don't use the wildcard '*' for Access-Control-Allow-Origin in production.
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'
@app.route('/examples', method=['OPTIONS', 'GET'])
def examples():
If you are using something like Spine.js you'll need to
handle requests for the OPTIONS method. I haven't found a
DRY way to handle this yet. I tried setting up a hook for before_request,
but was unsuccessful for now.
if request.method == 'OPTIONS':
return {}
return {'examples': [{
'id': 1,
'name': 'Foo'},{
'id': 2,
'name': 'Bar'}
if __name__ == '__main__':
from optparse import OptionParser
parser = OptionParser()
parser.add_option("--host", dest="host", default="localhost",
help="hostname or ip address", metavar="host")
parser.add_option("--port", dest="port", default=8080,
help="port number", metavar="port")
(options, args) = parser.parse_args()
run(app,, port=int(options.port))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment