2017-06-14 1 views
0

J'ai deux projets laravel sur le même serveur Apache d'Ubuntu.Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée dans Laravel Apache Project

Le projet A est disponible dans test.EXAMPLE.com et le «Projet B» sur www.EXAMPLE.com. "Project A" a un site web où je fais des requêtes AJAX au Projet B. Dans chacun d'eux j'ai un certificat GoDaddy SSL (un pour test.EXAMPLE.com et un autre pour www.EXAMPLE.com).

L'erreur que je reçois est:

XMLHttpRequest cannot load https://www.EXAMPLE.com/api_url. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://test.EXAMPLE.com' is therefore not allowed access. 

Comment puis-je résoudre ce problème ?. J'ai essayé d'ajouter un .htaccess à l'intérieur "Projet B" avec

Header set Access-Control-Allow-Origin "*" 

et en ajoutant dans le "projet A" AJAX en-tête, ce

'Access-Control-Allow-Origin' : '*', 
'Access-Control-Allow-Methods' : 'GET, POST, PUT, DELETE, OPTIONS' 

Qui peut me aider, merci.

Répondre

0

installer ce package:
https://github.com/barryvdh/laravel-cors

Avec ce package, vous pouvez très facilement ajouter les en-têtes CORS à vos options demandes.
Pour une raison quelconque, j'ai toujours des problèmes avec les en-têtes cors. Mais ils devraient juste être là pour chaque demande d'option qui est faite avec un appel ajax.

0

Vous pouvez créer un middleware simple pour Laravel:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class CorsHeaders 
{ 
    /** 
    * Append CORS headers to response 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     $response = $next($request); 

     $response->header('Access-Control-Allow-Origin', '*'); 
     // add allowed headers if needed 
     // $response->header('Access-Control-Allow-Headers', ''); 
     $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); 

     return $response; 
    } 
} 

et l'enregistrer dans le tableau $middleware dans le noyau http.

+0

Dans mon cas, cela n'a rien changé du tout. J'ajoute cet intergiciel aux routes que j'appelle, et le problème continue. –

+0

Sur quoi? L'appel réel ou le contrôle en amont? – Robert