API WP REST создает проблему проверки подлинности

Я получаю ошибку 401 или 403 при попытке создать сообщение с переднего конца. Я использую угловой в интерфейсе, и я хочу использовать базовую авторизацию. Я выставил api и создал nonce:

wp_localize_script( 'angular-core', 'RestAPI', array( 'url' => get_bloginfo('wpurl').'/wp-json/wp/v2/', 'nonce' => wp_create_nonce( 'wp_rest' ) ) ); 

Затем я получаю эту форму в html:

 <form ng-submit="processForm()"> <!-- Title --> <div id="title_field" class=""> <label>Title</label> <input type="text" name="title" class="" placeholder="Name of item" ng-model="formData.title"> </div> <!-- Submit Button --> <button type="submit" class=""> <span class=""></span> Submit! </button> </form> 

И это функция processForm в моем контроллере:

 $scope.formData = {}; //stores input from form above $scope.processForm = function() { console.log(RestAPI.nonce); $http({ method: 'POST', url: '/wp-json/wp/v2/posts', params: $scope.formData, transformRequest: angular.identity, headers: { 'Content-Type': 'multipart/form-data', 'X-WP-Nonce': RestAPI.nonce } }) .success(function (result) { console.log('Success!'); }).error(function () { console.log('Fail!'); }); }; 

Добавление части X-WP-Nonce в заголовки – это то, что меня от 401 до 403 ошибки, а затем просто говорит мне, что значение nonce недействительно. Если это имеет значение, во время входа в панель администратора, если я зашел на сайт и попытаюсь получить доступ к пользователям / мне (о которых я знаю, есть проблемы, перечисленные в документации), я просто выхожу из системы и неоднократно просил войти в систему. Может быть, я не понимаю, как использовать nonce?

Любая помощь приветствуется!

Solutions Collecting From Web of "API WP REST создает проблему проверки подлинности"

Это старый вопрос, но текущий REST API указывает, что заголовок X-WP-NONCE должен быть установлен через beforeSend вызов beforeSend . Ниже перечислены документы API REST API .

 .ajax( { url: wpApiSettings.root + 'wp/v2/posts/1', method: 'POST', beforeSend: function ( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce ); }, data:{ 'title' : 'Hello Moon' } } ).done( function ( response ) { console.log( response ); } ); 

Вы можете удалить свойство headers , выполнив вышеуказанное и используя свойство contentType . То есть, если вы используете функцию $.ajax .

 $scope.formData = {}; //stores input from form above $scope.processForm = function() { console.log(RestAPI.nonce); // using $.ajax not $http $.ajax({ method: 'POST', url: '/wp-json/wp/v2/posts', data: $scope.formData, transformRequest: angular.identity, contentType: 'multipart/form-data', beforeSend: function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', RestAPI.nonce ); }, success: function (result) { console.log('Success!'); }, error: function () { console.log('Fail!'); } }); };