Ich stoße gerade auf ein seltsames CORS-Problem.
Hier ist die Fehlermeldung:
XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...]
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Zwei Server:
- localhost: 8666 / routeREST /: Dies ist ein einfacher Python Bottle-Server.
- localhost: 8080 /: Python simpleHTTPserver, auf dem ich die Javascript-Anwendung ausführe. Diese App führt Ajax-Anforderungen auf dem oben genannten Server aus.
Irgendwelche Gedanken darüber, was das Problem sein könnte?
BEARBEITEN:
Und ... der Hafen war das Problem. Danke für deine Antworten :)
Wenn jemand auch einen Python-Flaschenserver verwendet, können Sie der Antwort in diesem Beitrag folgen, um das CORS-Problem zu lösen: Bottle Py: Aktivieren von CORS für jQuery AJAX-Anforderungen
javascript
python
ajax
cross-domain
cors
Mr_Pouet
quelle
quelle
Antworten:
Es wird nur dann als gleich angesehen, wenn Protokoll , Host und Port identisch sind: Gleiche Ursprungsrichtlinie
Wenn Sie es aktivieren möchten, müssen Sie der Cross-Origin Resource Sharing (cors) folgen, indem Sie Header hinzufügen. Mozilla hat Beispiele
Sie müssen Access-Control-Allow-Origin als Header in Ihre Antwort einfügen. Um es allen zu erlauben (das sollten Sie wahrscheinlich NICHT tun):
Access-Control-Allow-Origin: *
Wenn Sie mehrere Ursprünge unterstützen müssen (z. B. beide
example.com
undwww.example.com
), setzen SieAccess-Control-Allow-Origin
in Ihrer Antwort den Wert desOrigin
-header aus der Anforderung (nachdem Sie überprüft haben, dass der Ursprung auf der weißen Liste steht).Beachten Sie auch, dass einige Anfragen eine Preflight-Anfrage mit einer OPTION-Methode senden. Wenn Sie also Ihren eigenen Code schreiben, müssen Sie auch diese Anfragen bearbeiten. Siehe Mozilla für Beispiele .
quelle
'Access-Control-Allow-Origin: https://example.com'
ist nicht äquivalent'Access-Control-Allow-Origin: https://www.example.com'
. Wenn Ihre Site über beide zugänglich ist, sollten Sie beide in Ihren Antwortheadern haben.GET
,POST
undHEAD
. Weitere Informationen finden Sie im MDN-Artikel, der in der Antwort verlinkt ist .Die Portnummern sind unterschiedlich.
Eine Anforderung wird als domänenübergreifend betrachtet, wenn Schema, Hostname oder Port nicht übereinstimmen.
quelle