Bottle Py: Activation de CORS pour les requêtes jQuery AJAX

Je suis en train de travailler sur une API RESTful d'un service web sur la Bouteille Framework Web et souhaitez accéder à des ressources avec jQuery, les appels AJAX.

À l'aide d'un client REST, la ressource interfaces fonctionnent comme prévu et de traiter correctement les GET, POST, ... demandes. Mais lors de l'envoi d'un AJAX de jQuery requête POST, les OPTIONS de contrôle en amont, la demande est tout simplement refusé '405: Méthode pas le droit".

J'ai essayé d'activer la SCRO sur la Bouteille serveur, comme décrit ici: http://bottlepy.org/docs/dev/recipes.html#using-the-hooks-plugin
Mais le after_request crochet n'est jamais appelé à la demande OPTIONS.

Voici un extrait de mon serveur:

from bottle import Bottle, run, request, response
import simplejson as json

app = Bottle()

@app.hook('after_request')
def enable_cors():
    print "after_request hook"
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'

@app.post('/cors')
def lvambience():
    response.headers['Content-Type'] = 'application/json'
    return "[1]"

[...]

L'AJAX de jQuery appel:

$.ajax({
    type: "POST",
    url: "http://192.168.169.9:8080/cors",
    data: JSON.stringify( data ),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data){
        alert(data);
    },
    failure: function(err) {
        alert(err);
    }
});

Le serveur enregistre uniquement une erreur 405:

192.168.169.3 - - [23/Jun/2013 17:10:53] "OPTIONS /cors HTTP/1.1" 405 741

$.post fonctionne, mais ne pas être en mesure d'envoyer des demandes PUT irait à l'encontre de l'objectif d'un service RESTful.
Alors, comment puis-je laisser les OPTIONS de contrôle en amont demande à être gérées?

source d'informationauteur Joern