2017-05-09 1 views
0

Meine Lumen Middleware den folgenden CodeCORS Ausgabe in Lumen für POST

public function handle($request, Closure $next) 
{ 
    //Intercepts OPTIONS requests 
    if($request->isMethod('OPTIONS')) { 
     $response = response('', 200); 
    } else { 
     // Pass the request to the next middleware 
     $response = $next($request); 
    } 

    // Adds headers to the response 
    $response->header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, PATCH, DELETE'); 
    $response->header('Access-Control-Allow-Headers', $request->header('Access-Control-Request-Headers')); 
    $response->header('Access-Control-Allow-Origin', '*'); 

    // Sends it 
    return $response; 
} 

hat ich Postbote können Anfragen senden und es wird Antwort zu bekommen. Wenn ich eine Post-Anfrage über die vue.js-HTTP-Methode sende, wird der gesicherte Cross-Origin-Request-Fehler angezeigt.

+0

Sie Chrom verwenden Sie? Chrome blockiert selbst Cross-Origin-Anfragen. –

+0

Es passiert sowohl in Chrome und Firefox. Ich habe apache2.conf geändert und es scheint zu funktionieren. Aber warum scheitert es, wenn es in PHP geht? – LJP

+0

versuchen Sie uns dieses Paket für [cors] (https://github.com/barryvdh/laravel-cors) Handhabung –

Antwort

0

Einige Änderungen in Middleware für mich gearbeitet

public function handle($request, Closure $next) 
{ 
    $allowedDomains = array("http://localhost:8080"); 
    $origin = $request->server('HTTP_ORIGIN'); 
    if(in_array($origin, $allowedDomains)){ 
     //Intercepts OPTIONS requests 
     if($request->isMethod('OPTIONS')) { 
      $response = response('', 200); 
     } else { 
      // Pass the request to the next middleware 
      $response = $next($request); 
     } 
     // Adds headers to the response 
     $response->header('Access-Control-Allow-Origin', $origin); 
     $response->header('Access-Control-Allow-Methods', 'OPTIONS, HEAD, GET, POST, PUT, PATCH, DELETE'); 
     $response->header('Access-Control-Allow-Headers', $request->header('Access-Control-Request-Headers')); 
    } 

    // Sends it 
    return $response; 
}