2016-01-03 28 views
10

Ho avuto problemi con il caricamento delle immagini sul server. Sto usando ngFileUpload sul front-end. Ma ho sempre trovatoCaricamento immagine dominio incrociato Angolare + laravel

"Risposta alla richiesta di verifica preliminare non passa di controllo di controllo di accesso: No 'Access-Control-Allow-Origin' intestazione è presente la risorsa richiesta"

Codice angolare per il file Carica:

var uploadFile = function (file) { 
     if (file) { 

      if (!file.$error) { 
       Upload.upload({ 
        url: baseUrl+'upload', 
        file: file 


       }).progress(function (evt) { 
        var progressPercentage = parseInt(100.0 * evt.loaded/evt.total); 
        //console.log(evt.total); 
       }).success(function (data, status, headers, config) { 
        $timeout(function() { 

        console.log(data); 
        console.log(status); 
         if(status==200) 
         { 

          logo_path = data.logo_path; 

         } 

        }); 
       }); 
      } 

     } 
    }; 

Su laravel Ho configurato CORS in questo modo:

public function handle($request, Closure $next) 
{ 
    header("Access-Control-Allow-Origin: http://localhost:8001/"); 

    // ALLOW OPTIONS METHOD 
    $headers = [ 
     'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE', 
     'Access-Control-Allow-Headers'=> 'Content-Type, X-Auth-Token, Origin' 
    ]; 
    if($request->getMethod() == "OPTIONS") { 
     // The client-side application can set only headers allowed in Access-Control-Allow-Headers 
     return Response::make('OK', 200, $headers); 
    } 

    $response = $next($request); 
    foreach($headers as $key => $value) 
     $response->header($key, $value); 
    return $response; 
} 

La croce richiesta dominio POST normale funziona bene. io $ http.post(). Ho provato molte diverse varianti di intestazioni su angolare ma nessuna aiuta. Anche la richiesta OPTIONS restituisce 200 OK, ma viene comunque visualizzato il messaggio di errore di risposta preflight. Qualcuno può aiutarmi con come debugare ulteriormente questo problema?

+0

Aggiungi "Access-Control-Allow-Origin" anche alle intestazioni. – danial

+0

Per richiedere intestazioni? Non ho aiutato –

+0

intestazioni di risposta. – danial

risposta

8

Prova ad aggiungere:

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Headers: Origin, Content-Type'); 
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE'); 

in bootstrap/app.php Si può anche inserire un altro colpo di testa potrebbe essere necessario per il controllo accessi qui.