2017-08-27 4 views
0

d'abord tout ce que j'ai lu cette question: Tornado server: enable CORS requests
Ce que je fait est:CORS en tornade python envoyer seulement la demande d'option

class BaseHandler(RequestHandler): 
    def set_default_headers(self, *args, **kwargs): 
     self.set_header("Access-Control-Allow-Origin", "*") 
     self.set_header("Access-Control-Allow-Headers", "x-requested-with") 
     self.set_header("Access-Control-Allow-Methods", "POST, GET, OPTIONS") 

Et aussi une méthode d'option:

def options(self): 
    self.set_status(204) 
    self.finish() 

Et dans mon gestionnaire:

class AmirTest(BaseHandler): 
    def get(self, *args, **kwargs): 
     self.write('You have requested get method!') 

    def post(self, *args, **kwargs): 
     self.write('You have requested post method!') 

    def put(self, *args, **kwargs): 
     self.write('You have requested put method!') 

    def delete(self, *args, **kwargs): 
     self.write('You have requested delete method!') 

Voici comment je demande:

function del(){ 
    $.rest.put(
     "http://xxx.xxx.xxx.xxx:7777/amir_test", 
     {user: "A",pass: "b"}, 
     function (data) {console.log(data);} 
    ); 
} 

Le problème est quand je fait une demande cette URL, dans l'onglet réseau d'inspecteur il n'y a qu'une option et aucune demande de vente. que devrais-je faire?

Loot at the inspect element

Répondre

1

Les seuls ne fonctionnent Access-Control-Allow têtes pour GET (et certains POST) demandes. Pour les autres méthodes, la demande OPTIONS est obligatoire. Vous devez implémenter options() comme indiqué dans la réponse à la question liée.

+0

Je l'ai fait mais j'ai oublié de copier ici, Question mise à jour mais les mêmes résultats! et maintenant? –

+0

Votre 'Access-Control-Allow-Methods' doit inclure toutes les méthodes que vous prenez en charge (y compris PUT et DELETE dans ce cas) –