2017-07-23 2 views
0

Folgendes sendet ein Formular an eine PHP-Seite mit der jQuery-Funktion post und gibt dann die Antwort auf derselben HTML-Seite für den Benutzer aus. Der Code funktioniert perfekt auf dem Microsoft Edge-Browser. Er sendet die Antwort von der PHP-Seite und druckt sie dann aus, funktioniert aber nicht mit anderen Browsern. Ich habe Browser wie Firefox 5.0, IE11 und Chrome ausprobiert. Ich habe jedoch in Chrome inspiziert und den folgenden Fehler festgestellt: "Die XMLHttp-Anforderung kann localhost/products/s1.php nicht laden. Der Header 'access-control-allow-origin' ist in der angeforderten Quelle nicht vorhanden. Daher ist 'null' nicht zulässig Zugriff". Bitte Wie kann ich das beheben? Jede Hilfe wird sehr geschätzt. Error from chromeKeine Zugriffssteuerung Zulassen Ursprung, Ursprung Null

und hier ist der Erfolg von Microsoft Edge: Microsoft Edge success

Antwort

0

Dies geschieht, weil andere Browser (nicht EDGE) glauben, dass Sie versuchen zu machen Die Fehler aus Chrom kann in dem Bild unten zu finden eine Ajax-Anforderung an einen Host (Domäne), der sich von der Domäne unterscheidet, auf der sich die Seite befindet. Als Sicherheitsmaßnahme fragt der Browser zuerst den Server, ob diese Anfrage akzeptabel ist. Sofern der Server nicht für die Genehmigung der Anfrage konfiguriert ist, sendet der Browser die Anfrage niemals wirklich. Diese Sicherheitsfunktion wird die gerufene Same Origin Policy

Mal sehen, ob eine einfache Lösung ausreichend erste ist: In Ihrem Ajax-Request, versuchen Sie die URL localhost/products/s1.php-/products/s1.php Ändern

+0

Ich änderte es und sehe immer noch den folgenden Fehler XML Parsing Error: nicht übereinstimmende Tag. Erwartet:. Speicherort: file: /// C: /xampp/htdocs/products/s11.php Zeilennummer 13, Spalte 4: – smacaz

+0

Ein Analysefehler unterscheidet sich von dem Fehler, den Sie ursprünglich gemeldet haben. Ihr ursprünglicher Fehler war "* Nein 'access-control-allow-origin' Header ist vorhanden *". Wenn ich Ihnen geholfen habe, diesen Fehler zu umgehen, wählen Sie die Antwort aus. Versuchen Sie für Ihren neuen Fehler, es auf eigene Faust zu lösen; wenn Sie ein neues Problem nicht öffnen können. – BeetleJuice

+0

der ehemalige war von Chrome und der spätere war von Firefox und die Fehler erfasst vor dem Anwenden der Änderungen und nach dem Anwenden der Änderungen. Nach dem Anwenden der Änderungen hat sich der Chrome-Fehler nicht geändert und Microsoft Edge lädt die Antwort immer noch einwandfrei. Ich habe den Fehler nicht losgeworden. Aber ich möchte dir so viel danken @ Beetle Juice. – smacaz

0

Putting diese zunächst an der Spitze meiner PHP-Datei, in der die Antrag eingereicht wird mein Problem gelöst:

Siehe unten:

header("Access-Control-Allow-Origin:*"); 
 
header("Access-Control-Allow-Credentials:true"); 
 
header("Access-Control-Max-Age: 100000"); 
 
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Origin, Cache-Control, Pragma, Authorization, Accept, Accept-Encoding"); 
 
header("Access-Control-Allow-Methods: PUT, POST, GET, OPTIONS, DELETE");

Sie müssen jedoch möglicherweise nicht in der Produktionsumgebung verwenden, es sei denn, Sie sind sicher, dass Sie wirklich cors erlauben wollen.

Verwandte Themen