Backbone & Slim PHP - Access-Control-Allow-Headers - Pouvez OBTENIR de l'information, ne peut pas le publier?
Je suis à l'aide de l'épine Dorsale et le Slim framework PHP. Je suis en train de publier des informations à mon API, mais Access-Control-Allow-en-Têtes de garde me causer des problèmes...
Ma console lit:
OPTIONS http://api.barholla.com/user/auth 405 (Method Not Allowed) zepto.min.js:2
XMLHttpRequest cannot load http://api.barholla.com/user/auth. Request header field Content-Type is not allowed by Access-Control-Allow-Headers.
Mes en-têtes de lecture:
Request URL:http://api.barholla.com/user/auth
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin, content-type, accept
Access-Control-Request-Method:POST
Connection:keep-alive
Host:api.barholla.com
Origin:http://localhost
Referer:http://localhost/barholla/app/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Response Headersview source
Access-Control-Allow-Origin:*
Allow:POST
Connection:close
Content-Type:application/json
Date:Thu, 08 Nov 2012 16:12:32 GMT
Server:Apache
Transfer-Encoding:chunked
X-Powered-By:Slim
X-Powered-By:PleskLin
Mes en-têtes dans mon slim index.php fichier:
$res = $app->response();
$res->header('Access-Control-Allow-Origin', '*');
$res->header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
Pour gérer les données post:
$app->post('/user/auth', function () use ($app) {
//code here
});
Dans mon javascript (je suis en utilisant l'épine dorsale du cadre) mon code est:
App.userAuth = new App.UserAuthModel({
username: $('#username').val(),
password: hex_md5($('#password').val())
});
App.userAuth.save({}, {
success: function(model, resp) {
console.log(resp);
},
error: function(model, response) {
console.log(response);
}
});
Toute aide serait grandement apprécié, j'ai été coincé sur depuis bien longtemps!
OriginalL'auteur Danny | 2012-11-08
Vous devez vous connecter pour publier un commentaire.
J'ai eu un semblable de la croix de domaine
POST
problème (en fait avec tous les en-têtes à l'exceptionGET
). La suite résolu:solution parfaite
OriginalL'auteur Joe
En javascript de votre client que vous devez faire une demande d'OPTIONS de /utilisateur/auth, mais dans votre code PHP que vous êtes seul à accepter de publier des demandes par le biais de ce point de terminaison.
Si vous voulez que votre API pour accepter les OPTIONS de la méthode, vous devriez avoir quelque chose comme ceci dans votre code:
Ou, si vous souhaitez gérer plusieurs méthodes HTTP, dans la même fonction:
Gardez à l'esprit que la méthode des OPTIONS, selon le W3C:
Sinon, il suffit de changer votre code du client pour faire une requête POST au lieu de la demande OPTIONS. C'est plus simple et plus logique que l'authentification de l'utilisateur par le biais de la méthode des OPTIONS. Dans zepto.js il serait quelque chose comme ceci:
OriginalL'auteur mayconbordin
Votre demande d'OPTIONS devrait être un de 200 de retourner une réponse vide. Ensuite, le navigateur va envoyer le réel de la requête POST.
Aussi, pas besoin d'ajouter des OPTIONS dans
Access-Control-Allow-Methods
en-tête.Il semble que votre utilisation de l'authentification, pourquoi ne pas ajouter Access-Control-Allow-Pouvoirs en-tête de trop.
Pour plus d'informations consulter cette code il peut être utile.
OriginalL'auteur julesbou
CorsSlim m'a aidé. https://github.com/palanik/CorsSlim
OriginalL'auteur Iyke Perry