Die Authentifizierung von localhost zu Rest-API führt zu einem CORS-Fehler

Lesezeit: 2 Minuten

Benutzer-Avatar
Magor Menessy

Ich habe gerade ein frisches wp auf einem installiert Entwicklungsserver. Ich versuche, mich bei der Rest-API (Plugin, da es wp v.4.6.3 ist) mit einer ionic/angularjs-App zu authentifizieren, die sich auf meinem Computer/Gerät befindet. Aktuell im Einsatz JWT-Authentifizierung für WP-API Plugin. Dies ist mein Header mit Hilfe von HTTP-Header-Plugins:

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

Egal was ich tue, ich bekomme einen CORS-Fehler. Das neuste ist:

Das Anforderungsheaderfeld „Content-Type“ ist von Access-Control-Allow-Headers in der Preflight-Antwort nicht zulässig.

Das JWT-Plugin hatte in den Dokumenten auch einige Erwähnungen der Bearbeitung von .htaccess und wp-config.php, was ich auch tat. Habe mehrere Kombinationen von htacces edit und/oder Plugins ausprobiert. Aber der gleiche oder ein ähnlicher Fehler taucht auf.

Dies ist mein Code, basierend auf dem Dokument des JWT-Plugins (Anmeldeinformationen/URL gültig!):

var apiHost="http://dev.imok.ro/authworks/wp-json";
$http.post( apiHost + '/jwt-auth/v1/token', {
   username: 'admin',
   password: 'admin!@#'
})
.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>

Danke für Ihre Hilfe! Magor

  • Dasselbe Problem für mich

    – Simon H

    14. April 2017 um 20:28 Uhr

Sie können dies beheben, indem Sie public/class-jwt-auth-public.php auf read bearbeiten

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));
    }
}

Ich habe a eingereicht PR

  • ICH HABE KEIN GLÜCK, ES FUNKTIONIERT NICHT

    – DMS-KH

    29. März 2021 um 19:43 Uhr

1226360cookie-checkDie Authentifizierung von localhost zu Rest-API führt zu einem CORS-Fehler

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy