J'utilise la dernière version de WP-API et l'authentification de base recommandée pour tester l'ajout d'une publication à WP à partir de remote.
J'ai des en-têtes d'accès ouverts du côté WP:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization, Content-Type");
Lorsque je soumets une demande Get à: http://sandbox.ravennainteractive.com/wp-json/wp/v2/posts , l’appel s’authentifie facilement et renvoie le Hello World Post.
Lorsque je soumets une demande de publication à la même URL. Je reçois une erreur. Voici mon appel jQuery ajax:
$('#test-post').submit(function(e){
e.preventDefault();
var title = $( '#title' ).val();
var content = $( '#content_raw' ).val();
var postData = {
title: title,
content: content
}
console.log(postData);
$.ajax({
method: 'POST',
contentType: 'application/json',
data: postData,
url: sandboxUrl,
beforeSend: function( xhr ) {
xhr.setRequestHeader ('Authorization', 'Basic '+ btoa( 'apiuser' + ':' + 'PASSWORD' ));
},
success: function(data){
console.log(data);
alert('Your comment was successfully added');
},
error: function(data){
console.log(data);
alert('There was an error adding your comment');
}
});
return false;
});
La réponse est Impossible de charger la ressource: le serveur a répondu avec un statut de 403 (interdit)
Tableau [0] responseText: "[{" code ":" rest_forbidden "," message ":" Vous n'êtes pas autorisé à le faire. "," Data ": {" status ": 403}}]" "
Si vous exécutez ce bloc de code, en supprimant les extras inutiles, la requête fonctionne et renvoie la publication Hello World.
$('#test-post').submit(function(e){
e.preventDefault();
$.ajax({
method: 'GET',
url: sandboxUrl,
beforeSend: function( xhr ) {
xhr.setRequestHeader ('Authorization', 'Basic '+ btoa( 'apiuser' + ':' + 'PASSWORD' ));
},
success: function(data){
console.log(data);
alert('Your comment was successfully added');
},
error: function(data){
console.log(data);
alert('There was an error adding your comment');
}
});
return false;
});
Comment puis-je résoudre ça?
J'ai rencontré le même problème.
... l'authentification de base recommandée ...
J'ai trouvé que le problème est dans le plugin Basic Auth. Les gars de WP-API recommandent d'utiliser leur propre plugin et cette solution fonctionne pour moi.
Courir
clone de git https://github.com/WP-API/Basic-Auth.git
Allez sur votre tableau de bord d'administrateur WordPress, page des plugins. L’authentification de base JSON doit figurer dans la liste. Activez-le.
Maintenant, créer un enregistrement via la demande POST devrait fonctionner.