Hello,

Je suis en train d'essayer de mettre en place une webapp qui communique avec un service REST.

Le service en lui même fonctionne côté serveur (testé avec Postman). Le login fonctionne sous principe de JWT.
Mais lorsque je tente de faire un POST en angular, il me renvoie une 403 et je ne comprends pas pourquoi.

Voici mon code où je passe le headers des requetes :

app.config(function ($routeProvider, $httpProvider) {
    $httpProvider.interceptors.push('authInterceptor');
});

app.factory('authInterceptor', function ($rootScope, $q, $window) {
  return {
    request: function (config) {
      config.headers = config.headers || {};
      if ($window.sessionStorage.token) {
        config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
        console.log('HEADERRS : ', config.headers);
      }
      return config;
    },
    response: function (response) {
      if (response.status === 401) {
        // handle the case where the user is not authenticated
      }
      return response || $q.when(response);
    }
  };
});

Et voici le code pour la requete POST

    $scope.add = function() {
        var dataPost = {
                    "title":"test de titre"
                };

        $http.post('http://localhost/wp_rest/wp-json/wp/v2/posts', dataPost)
            .success(function(data) {
                console.log('add post success : ', data);
            })
            .error(function(data) {
                console.log('add post ERROR');
            });
    }

J'ai mis un point d'arrêt sur le config.headers.Authorization pour vérifier qu'il y passe bien, et ça le fait et le token est bien passé.

Quelqu'un aurait une idée ?

3 réponses


As tu regarde dans Chrome Developper tools si la requete est la meme que Postman ?

Bonjour,

Une piste:

Vérifie que dans le header tu as bien 'Content-Type': 'application/x-www-form-urlencoded' .
Si ce n'est pas le cas complète le header avec cela. Cela pourrait être la source de ton problème. A vérifier.

cordialement

Antho

Reivax
Auteur

Hello
Merci pour vos 2 réponses.
Je viens de trouver le soucis... c'est parce que je suis logger sur le backoffice (en l'occurence il s'agit d'un WordPress). C'est un peu chiant ça :(
Vous savez si il y a un moyen de passer outre ?