2017-04-17 5 views
1
verwenden

Ich versuche, eine Ajax-Anfrage mit fetch, und wenn ich das tue, bekomme ich einen 405 (Method Not Allowed) Fehler.405 Methode nicht zulässig, wenn Header in der Fetch-API

ich es so bin Ausführung:

fetch(url, { 
    method: 'get', 
    headers: { 
     'Game-Token': '123' 
    } 
}); 

Und das mir einen Fehler gibt. Wenn ich die Header entferne, geht die Anfrage durch. Allerdings benötige ich diesen Header für die Validierung auf dem Server.

fetch(url, { method: 'get' }); 

Ich habe folgendes Setup in meiner .htaccess-Datei:

Header set Access-Control-Allow-Origin "*" 
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS, FETCH" 
Header set Access-Control-Allow-Credentials "true" 
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-CSRF-TOKEN, Game-Token, developerKey" 
Header set X-Frame-Options "SAMEORIGIN" 
Header set Access-Control-Expose-Headers "Game-Token" 

Ich bin nicht sicher, was ist der Grund dafür nicht durchlaufen.

+0

An welche URL senden Sie Ihre Anfrage? Ist es Ihre eigene API oder eine dritte Partei? Wenn es Letzteres ist, liefern sie Dokumentation, wie man auf die API zugreift? –

+0

Es ist mein eigener API-Server, den wir mit Lumen verwenden –

+1

Vielleicht ist das nützlich? http://stackoverflow.com/questions/31622818/error-405-method-not-allowed-laravel-5 –

Antwort

0

Also, das hatte nichts mit JavaScript oder .htaccess zu tun. Stattdessen hat es mit Lumen zu tun. Wir müssen die OPTIONS Anfrage abfangen und antworten. Was wir getan haben, war eine Middleware-Datei zu erstellen, die auf die OPTIONS Methode überprüft und mit einer 200 reagiert.

use Closure; 

class CorsMiddleware 
{ 

    public function handle($request, Closure $next) 
    { 

     if ($request->isMethod('OPTIONS')) 
     { 
      return response('',200); 
     } 

     return $next($request); 
    } 
} 
Verwandte Themen