Ich verwende diesen Code, um eine AJAX-Anfrage zu stellen:
$("#userBarSignup").click(function(){
$.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
{/*params*/},
function(response){
$("#signup").html("TEST");
$("#signup").html(response);
},
"html");
Aber von der Google Chrome JavaScript-Konsole erhalte ich immer wieder den folgenden Fehler:
XMLHttpRequest kann die Datei nicht laden: /// C: /xampp/htdocs/webname/resources/templates/signup.php. Ursprungsübergreifende Anforderungen werden nur für HTTP unterstützt.
Das Problem ist, dass die Datei signup.php auf meinem lokalen Webserver gehostet wird, auf dem die gesamte Website ausgeführt wird, sodass sie nicht domänenübergreifend ist.
Wie kann ich dieses Problem lösen?
javascript
Siannon
quelle
quelle
allow_url_include = On
meine Serverkonfiguration einstellen .Antworten:
Sie müssen tatsächlich einen Webserver ausführen und die Get-Anforderung an einen URI auf diesem Server senden, anstatt die Get-Anforderung an eine Datei zu senden. zB die Zeile ändern:
etwas zu lesen wie:
und die erste Anforderungsseite muss auch über http erstellt werden.
quelle
allow_url_include = On
meine Serverkonfiguration einstellen . Kann ich es sicher aktivieren oder verursacht es einige Sicherheitsprobleme?python -m SimpleHTTPServer 8888
und (3) navigieren Sie mit dem Browser zuhttp://localhost:8888/
python -m http.server 8888
Ich hatte Glück, Chrom mit dem folgenden Schalter zu starten:
Versuchen Sie auf os x (geben Sie die Bindestriche erneut ein, wenn Sie kopieren und einfügen):
Auf einem anderen * nix-Lauf (nicht getestet)
oder unter Windows bearbeiten Sie die Eigenschaften der Chrome-Verknüpfung und fügen Sie den Schalter hinzu, z
bis zum Ende des "Ziel" -Pfads
quelle
open -a 'Google Chrome' --args —allow-file-access-from-files
. Beachten Sie auch: Wenn Sie eine dateibasierte URL angeben, die auf // basiert (anstelle eines Dateisystempfads), müssen Sie diesefile://localhost/...
anstelle von verwendenfile:///...
.Wenn Sie an einem kleinen Front-End-Projekt arbeiten und es lokal testen möchten, öffnen Sie es normalerweise, indem Sie auf Ihr lokales Verzeichnis im Webbrowser zeigen und beispielsweise die Datei /// home / erick / mysuperproject / index eingeben .html in Ihrer URL-Leiste. Wenn Ihre Site jedoch versucht, Ressourcen zu laden, selbst wenn diese in Ihrem lokalen Verzeichnis abgelegt sind, werden möglicherweise folgende Warnungen angezeigt:
XMLHttpRequest kann die Datei ///home/erick/mysuperproject/mylibrary.js nicht laden. Ursprungsübergreifende Anforderungen werden nur für HTTP unterstützt.
Chrome und andere moderne Browser haben Sicherheitsbeschränkungen für Cross Origin-Anforderungen implementiert. Dies bedeutet, dass Sie nichts über file: /// laden können. Sie müssen jederzeit das http: // -Protokoll verwenden, auch lokal aufgrund der gleichen Origin-Richtlinien. So einfach ist das: Sie müssen einen Webserver bereitstellen, um Ihr Projekt dort auszuführen.
Dies ist nicht das Ende der Welt und es gibt viele Lösungen, einschließlich des guten alten Apache (mit VirtualHosts, wenn Sie mehrere andere Projekte ausführen), node.js mit Express, einem Ruby-Server usw. oder einfach dem Ändern Ihres Browsereinstellungen.
Es gibt jedoch eine einfachere und leichtere Lösung für die Faulen. Sie können Pythons SimpleHTTPServer verwenden. Es ist bereits im Lieferumfang von Python enthalten, sodass Sie überhaupt nichts installieren oder konfigurieren müssen!
So zum Beispiel CD in Ihr Projektverzeichnis
1 cd / home / erick / mysuperproject und dann einfach benutzen
1 Python -m SimpleHTTPServer Und das war's, diese Meldung wird in Ihrem Terminal angezeigt
1 HTTP auf 0.0.0.0 Port 8000 bereitstellen ... Jetzt können Sie zu Ihrem Browser zurückkehren und
http://0.0.0.0:8000
alle dort bereitgestellten Verzeichnisdateien aufrufen. Sie können den Port und andere Dinge konfigurieren, lesen Sie einfach die Dokumentation. Aber dieser einfache Trick funktioniert für mich, wenn ich es eilig habe, eine neue Bibliothek zu testen oder eine neue Idee auszuarbeiten.Los geht's, viel Spaß beim Codieren!
BEARBEITEN: In Python 3+ wurde SimpleHTTPServer durch http.server ersetzt. In Python 3.3 ist beispielsweise der folgende Befehl äquivalent:
quelle
Beim Versuch, einfach HTML-Dateien zu laden, die JSON-Daten zum Auffüllen der Seite verwendeten, wurde der gleiche Fehler angezeigt. Daher habe ich node.js und express verwendet, um das Problem zu lösen. Wenn Sie keinen Knoten installiert haben, müssen Sie Knoten installieren zuerst.
Installieren Sie Express
npm install express
Erstellen Sie eine server.js-Datei im Stammordner Ihres Projekts, in meinem Fall einen Ordner über den Dateien, die ich als Server verwenden wollte
Fügen Sie Folgendes in die Datei server.js ein und lesen Sie dies auf der Express- Gihub-Site:
Nachdem Sie server.js gespeichert haben, können Sie den Server ausführen mit:
node server.js
http://localhost:8000/FILENAME
und Sie sollten die HTML-Datei sehen, die Sie laden wolltenquelle
Wenn Sie nodejs installiert haben, können Sie den Server über die Befehlszeile herunterladen und installieren:
Ändern Sie die Verzeichnisse in das Verzeichnis, in dem Sie Dateien bereitstellen möchten:
Führen Sie den Server aus:
Dadurch wird die Meldung gestartet. http-server wird gestartet und bereitgestellt auf:
Verfügbar unter: http: // your_ip: 8080 und http://127.0.0.1:8080
So können Sie URLs in Ihrem Browser wie verwenden
quelle
Auf diese Weise funktioniert es am besten. Stellen Sie sicher, dass sich beide Dateien auf dem Server befinden. Verwenden Sie beim Aufrufen der HTML-Seite die Webadresse wie:
http:://localhost/myhtmlfile.html
und nichtC::///users/myhtmlfile.html
. Stellen Sie außerdem sicher, dass die an json übergebene URL eine Webadresse ist, wie unten angegeben:quelle
Ändern Sie den chromeLocation-Pfad mit Ihrem.
oben als .bat-Datei speichern.
Ziehen Sie Ihre Datei auf die von Ihnen erstellte Batchdatei. (Chrome bietet jedoch die Option zum Wiederherstellen von Seiten. Wenn Sie also geöffnete Seiten haben, klicken Sie einfach auf Wiederherstellen, und es funktioniert).
quelle
Sie können einen Server auch ohne Python mit dem PHP-Interpreter starten.
Z.B:
Dies kann nützlich sein, wenn Sie eine Alternative zu npm wünschen, da das PHP-Dienstprogramm auf einigen Betriebssystemen (einschließlich Mac) vorinstalliert ist.
quelle