Mam teraz dziwny problem z CORS.
Oto komunikat o błędzie:
XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...]
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Dwa serwery:
- localhost: 8666 / routeREST /: to jest prosty serwer butelek Pythona.
- localhost: 8080 /: Python simpleHTTPserver, na którym uruchamiam aplikację Javascript. Ta aplikacja wykonuje żądania Ajax na serwerze powyżej.
Czy zastanawiałeś się, co może być problemem?
EDYTOWAĆ:
I ... port był problemem. Dzięki za odpowiedzi :)
Jeśli ktoś używa również serwera butelek Pythona, możesz postępować zgodnie z odpowiedzią podaną w tym poście, aby rozwiązać problem z CORS: Bottle Py: Włączanie CORS dla żądań jQuery AJAX
javascript
python
ajax
cross-domain
cors
Mr_Pouet
źródło
źródło
Odpowiedzi:
Uznaje się, że jest taki sam tylko wtedy, gdy protokół , host i port są takie same: takie same zasady pochodzenia
Jeśli chcesz ją włączyć, musisz śledzić współdzielenie zasobów między źródłami (cors) , dodając nagłówki. Mozilla ma przykłady
Musisz dodać Access-Control-Allow-Origin jako nagłówek swojej odpowiedzi. Aby pozwolić wszystkim (prawdopodobnie NIE powinieneś tego robić):
Access-Control-Allow-Origin: *
Jeśli potrzebujesz obsługiwać wiele źródeł (na przykład oba
example.com
iwww.example.com
), ustawAccess-Control-Allow-Origin
w odpowiedzi wartośćOrigin
nagłówka -header z żądania (po sprawdzeniu, że źródło znajduje się na białej liście).Zwróć również uwagę, że niektóre żądania wysyłają żądanie inspekcji wstępnej metodą OPTION, więc jeśli piszesz własny kod, musisz również obsłużyć te żądania. Przykłady można znaleźć w Mozilli .
źródło
'Access-Control-Allow-Origin: https://example.com'
jest to równoważne z . Jeśli Twoja witryna jest dostępna za pośrednictwem obu z nich, w nagłówkach odpowiedzi powinny znajdować się oba.'Access-Control-Allow-Origin: https://www.example.com'
GET
,POST
iHEAD
. Więcej informacji można znaleźć w artykule MDN, do którego link znajduje się w odpowiedzi .Numery portów są różne.
Żądanie jest uznawane za międzydomenowe, jeśli którykolwiek ze schematów, nazwa hosta lub port nie są zgodne.
źródło