2017-07-08 5 views
2

Ich versuche, eine einfache API-Basis-App mit Laravel (als Backend) und angularjs (als Frontend) zu bauen. Am Anfang stand ich diesen Fehler:CORS funktioniert korrekt auf Sharing-Host, aber nicht in localhost

XMLHttpRequest cannot load http://127.0.0.1:8000/api/myroute . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost ' is therefore not allowed access.

  • http://127.0.0.1:8000/api/myroute ist meine Strecke einige Daten, in Laravel als POST-Route festgelegt zu bekommen.

Das ist, während ich die CORS-Middleware auf meinen Strecken hinzugefügt haben (nach this sample) auf diese Weise: Cors Middleware:

public function handle($request, Closure $next) 
    { 
     return $next($request) 
      ->header('Access-Control-Allow-Origin', '*') 
      ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') 
      ->header('Access-Control-Allow-Headers', 'x-requested-with, Content-Type, origin, authorization, accept, client-security-token'); 
    } 

und der Code unten ist mein $http Code, den ich senden Anfrage in AngularJS:

$http({ 
    method: 'POST', 
    url: 'http://127.0.0.1:8000/api/myroute', 
    headers: { 
     'Content-Type': 'application/json' 
    } 
}).then(function (response) { 
    console.log(response); 
}, function (reject) { 
    console.log(reject); 
}); 

ich sollte diesen Punkt hinzufügen, dass, wenn ich mein Projekt auf einem Host hochladen, diese Cors funktioniert Ok! Mein Problem ist nur http://localhost.

Ich versuchte es auch in Firefox aber das Ergebnis war das gleiche, nur Firefox nicht den Cross Origin Error gezeigt und es ist der einzige Unterschied.

In dieser Zeit konnte ich mein Projekt auf Host nicht entwickeln und ich muss lokal arbeiten. Also brauche ich Hilfe!

+0

Seltsam, dass Sie eine URL mit der Loopback-IP sehen, aber das Original ist lokaler Host. Haben Sie versucht, URL: 'http: // localhost: 8000/api/myroute', '? –

+1

Eine andere Arbeit, die ich bei der lokalen Entwicklung (Ich bin auf Windows) verwenden, besteht darin, einen FQDN zu meiner Host-Datei hinzuzufügen. Die Zeile sieht wie folgt aus: 'dev.somesite.local 127.0.0.1' und dann kann ich 'url:' http: //dev.somesite.local/api/myroute ' –

+0

danke für deine Kommentare verwenden, Über die erste, ja! Ich habe beides versucht, es gibt keinen Unterschied zwischen ihnen. Über zweiten Kommentar habe ich es auch getan, aber es ist wie localhost oder 127.0.0.1 –

Antwort

1

Versuchen unten Codes als Header auf Ihre Laravel der index.php Datei hinzufügen:

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

aber vorsichtig sein, über Kreuz origion!

Verwandte Themen