HTTP OPTIONS erreur dans Phil Esturgeon, Codeigniter Restserver et Backbone.js
Mon backbone.js
application de jeter un HTTP OPTIONS ne trouve pas d'erreur quand j'essaie d'enregistrer un modèle à mon service web restful qui se trouve sur un autre hôte/URL.
Basé sur mes recherches, j'ai recueillies à partir de ce post que :
une demande constamment envoyer un OPTIONS-tête de requête http, et de ne pas déclencher la requête POST.
Apparemment de la SCRO avec les demandes qui "peut provoquer des effets secondaires sur les données de l'utilisateur" fera de votre navigateur "contrôle en amont" de la demande avec les OPTIONS d'en-tête de demande de vérifier pour approbation, avant l'envoi de votre méthode de requête HTTP.
J'ai essayé de contourner ce problème en:
- Settting emulateHTTP de la colonne vertébrale pour vrai.
De la colonne vertébrale.emulateHTTP = true;
- J'ai aussi permis à permis à tous de la SCRO et CSRF options dans l'en-tête.
header('Access-Control-Allow-Origin: *');
l'en-tête("Access-Control-Allow-en-Têtes: à l'Origine, X-requested-with, Content-Type, Accepter");
l'en-tête("Access-Control-Allow-Méthodes: GET, POST, OPTIONS");
L'application s'est écrasé lors de la Backbone.emulateHTTP
ligne de code a été introduit.
Est-il un moyen de répondre à la demande d'OPTIONS dans CodeIgniter RESTServer et il y a d'autres alternatives pour permettre de désactiver cette demande de parler?
J'ai trouvé ce sur Github comme une solution. Je ne suis pas sûr si je devrais l'utiliser car il semble un peu dépassé.
OriginalL'auteur Joel Dean | 2013-03-24
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré exactement le même problème. Pour le résoudre j'ai un MY_REST_Controller.php dans le noyau et tous mes API REST contrôleurs de l'utiliser comme une classe de base. J'ai simplement ajouté un constructeur de ce type pour gérer les OPTIONS des demandes.
Ce vérifie juste si le type de demande est des OPTIONS et, si oui, juste éteint qui retournent un code 200 pour la demande.
Après avoir cherché pendant des heures; c'était la solution. Merci 🙂
Sur le dessus de cela nous pouvons ajouter "Access-Control-Allow-Origin", header('Access-Control-Allow-Origin:' . $_SERVER['HTTP_ORIGIN']); Alors que là, vous pouvez cochez la case autoriser le domaine de l'accès à votre api.
probablement préférable d'envoyer une réponse 204: donc le code serait: parent::__construct(); if($_SERVER['REQUEST_METHOD'] === "OPTIONS") { $this->réponse(NULL,HTTP_NO_CONTENT); return; }
Je peux savoir pourquoi avez-vous besoin de nier toutes les "OPTIONS" de la méthode de requête?
OriginalL'auteur jamespcole
Vous pouvez également modifier la
$allowed_http_methods
bien dans votre sous-classe d'exclure la méthode des options. Les versions précédentes de REST_controller n'a rien fait avec OPTIONS et en ajoutant cette ligne semble imiter ce comportement:C'est beaucoup plus propre que le rang de réponse. +1
OriginalL'auteur andymcintosh