2017-12-12 2 views
0

Ich bin in lokalen eine Post-Anforderung mit XMLHttpRequest zu meiner anderen Domain zu senden, aber ich bekomme die CORS Fehler unter:Mit Blick auf einen CORS ERROR in lokalen Server

fehlgeschlagen http://another.local/ laden: Der ‚Zugriff-Control- Allow-Origin 'Header enthält mehrere Werte *, http://example.local', aber nur einer ist erlaubt. Ursprung 'http://example.local' ist daher nicht erlaubt.

Ich hatte Header in PHP wie unten:

<?php 
header("Access-Control-Allow-Origin: *",false); //header("Access-Control-Allow-Origin: *"); 
header('Access-Control-Allow-Methods: POST, GET'); 
header("Access-Control-Allow-Credentials: true"); 
header('Access-Control-Max-Age: 1000'); 
header("Content-type:application/json"); 
readfile('data.json'); 

Trotz der Kopfeinstellung, ich bin immer noch die CORS Störung zu erhalten; Was mache ich falsch und wie kann ich es beheben?

+0

Was ist der neue Fehler cors nach dem Snippet-Code? – madalinivascu

+1

Probieren Sie header ('Access-Control-Allow-Origin: *'); ' – Thamaraiselvam

+0

Sie könnten es einfacher finden, die' fetch'-API zu verwenden - sie hat die richtige Unterstützung für CORS https://developer.mozilla.org/en -US/docs/Web/API/Fetch_API. Es könnte helfen, wenn der Ajax-Code zur Frage hinzugefügt wurde – RamRaider

Antwort

0

Schließlich behebe ich dieses Problem.
Ich benutze Laragon für PHP-Entwicklung und ich weiß nicht, seine Laragon Konfiguration oder Apache, dass sie standardmäßig diese Einstellung in der Konfigurationsdatei:

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

und dies macht Konflikte mit Header, die ich in PHP gesetzt. Ich kommentiere es und kann Header ohne Probleme setzen.

dank @Thamaraiselvam & @ rahul-mukherjee für die Hilfe.

0

Sie können versuchen mit Header ('Access-Control-Allow-Origin: http://example.local', false);

, wenn Sie nicht die HTTP-Methoden festgelegt haben, können Sie verwenden:

header("Access-Control-Allow-Credentials: true"); 
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); 
header('Access-Control-Max-Age: 1000'); 
header("Access-Control-Allow-Headers: ACCEPT, CONTENT-TYPE, X-CSRF-TOKEN"); 

Hinweis: bitte die Werte nach Ihren Anforderungen ändern:

+0

Danke aber mit/ohne false bekomme immer noch den gleichen Fehler. –

+0

Verwenden Sie alle Header oder nur Zugriffssteuerung? Könnten Sie bitte alle erforderlichen Header verwenden und schauen .. danke! –

0

Sie können versuchen, header('Access-Control-Allow-Origin: *');

Einstellung und Überprüfen Sie auch, ob Sie die gleiche Kopfzeile zweimal haben

+0

kein Unterschied. Fehler beim Laden von "http: //another.local/": Der Header "Access-Control-Allow-Origin" enthält mehrere Werte "*, *", aber nur einer ist zulässig. Origin "'http: //example.local'" ist daher nicht erlaubt. –

+0

Überprüfen Sie, dass Sie den gleichen Header zweimal hinzugefügt haben 'header ('Access-Control-Allow-Origin)' – Thamaraiselvam

+0

Warum sollte ** jeder ** Ursprung da draußen statt nur seiner eigenen Domain erlaubt werden? O.o – Andreas