4

Я только что установил свежий wp на dev server. Я пытаюсь аутентифицировать остальные api (плагин, так как это wp v.4.6.3), с ионным/угловым приложением, которое находится на моем компьютере/устройстве. В настоящее время используется плагин JWT Authentication for WP-API. Это мой заголовок, с помощью HTTP-заголовков модулей:Аутентификация с localhost на отдых api Результаты CORS error

content-encoding: gzip 
x-powered-by: php/5.5.9-1ubuntu4.21 
connection: keep-alive 
content-length: 3361 
keep-alive: timeout=5, max=95 
access-control-allow-headers: accept, authorization, cache-control, cookie, content-type, origin 
server: apache/2.4.7 (ubuntu) 
x-frame-options: allow-from * 
vary: accept-encoding 
access-control-allow-methods: get, post, options, head, put, delete, trace, connect, patch 
content-type: text/html; charset=utf-8 
access-control-allow-origin: * 
access-control-expose-headers: cache-control, cookie, content-type, origin 
cache-control: no-cache, must-revalidate, max-age=0 

Независимо от того, что я делаю, я получаю ошибку CORS. Самая последняя:

Запросить поле заголовка Content-Type не допускается Access-Control-Allow-Headers в предполетной ответ.

Плагин JWT также имел в документах упоминание о редактировании .htaccess и wp-config.php, что я и сделал. Пробовал несколько комбинаций редактирования и/или плагинов htacces. Но появляется такая же или подобная ошибка.

Это мой код, основанный на РОУ JWT плагин (учетные данные/URL недействителен!):

var apiHost = 'http://dev.imok.ro/authworks/wp-json'; 
$http.post(apiHost + '/jwt-auth/v1/token', { 
    username: 'admin', 
    password: '[email protected]#' 
}) 
.then(function(response) { 
    console.log('siker', response.data) 
}) 
.catch(function(error) { 
    console.error('Errorrrr', error); 
}); 

.htaccess:

#<ifModule mod_headers.c> 
# Header always set Access-Control-Allow-Origin: * 
## Header always set Access-Control-Allow-Methods "POST, GET, PUT, DELETE, OPTIONS" 
## Header always set Access-Control-Allow-Headers "content-type" 
#</ifModule> 

<IfModule mod_rewrite.c> 

#SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 

RewriteEngine on 
RewriteCond %{HTTP:Authorization} ^(.*) 
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] 

RewriteEngine On 
RewriteBase /authworks/ 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /authworks/index.php [L] 
</IfModule> 

Спасибо за вашу помощь! Мажор

+0

Тот же вопрос для меня –

ответ

1

Вы можете это исправить, отредактировав общественного/класса-JWT-AUTH-public.php читать

public function add_cors_support() 
{ 
    $enable_cors = defined('JWT_AUTH_CORS_ENABLE') ? JWT_AUTH_CORS_ENABLE : false; 
    if ($enable_cors) { 
     remove_filter('rest_pre_serve_request', 'rest_send_cors_headers'); 
     add_filter('rest_pre_serve_request', function($value) { 
      header('Access-Control-Allow-Origin: *'); 
      header('Access-Control-Allow-Methods: GET, POST, UPDATE, DELETE'); 
      header('Access-Control-Allow-Headers: Authorization, Content-Type'); 
      header('Access-Control-Allow-Credentials: true'); 
      return $value; 
     }); 

     // $headers = apply_filters('jwt_auth_cors_allow_headers', 'Access-Control-Allow-Headers, Content-Type, Authorization'); 
     // header(sprintf('Access-Control-Allow-Headers: %s', $headers)); 
    } 
} 

Я представил PR