Me estoy encontrando con un extraño problema de CORS en este momento.
Aquí está el mensaje de error:
XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...]
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin
Dos servidores:
- localhost: 8666 / routeREST /: este es un servidor de botella de Python simple.
- localhost: 8080 /: Python simpleHTTPserver donde ejecuto la aplicación Javascript. Esta aplicación está ejecutando solicitudes Ajax en el servidor anterior.
¿Alguna idea sobre cuál podría ser el problema?
EDITAR:
Y ... el puerto era el problema. Gracias por tus respuestas :)
Si alguien también está usando un servidor de botellas de Python, puede seguir la respuesta dada en esta publicación para resolver el problema de CORS: Bottle Py: Habilitación de CORS para solicitudes de jQuery AJAX
javascript
python
ajax
cross-domain
cors
Mr_Pouet
fuente
fuente
Respuestas:
Solo se considera igual si el protocolo , el host y el puerto son los mismos: Política de mismo origen
Si desea habilitarlo, debe seguir el intercambio de recursos de origen cruzado (cors) agregando encabezados. Mozilla tiene ejemplos
Debe agregar Access-Control-Allow-Origin como encabezado en su respuesta. Para permitir que todos (probablemente NO deberías hacer eso):
Access-Control-Allow-Origin: *
Si necesita admitir varios orígenes (por ejemplo, ambos
example.com
ywww.example.com
), establezcaAccess-Control-Allow-Origin
en su respuesta el valor delOrigin
-encabezado de la solicitud (después de verificar que el origen está en la lista blanca).También tenga en cuenta que algunas solicitudes envían una solicitud de verificación previa, con un método OPCIÓN, por lo que si escribe su propio código, también debe manejar esas solicitudes. Consulte Mozilla para ver ejemplos .
fuente
'Access-Control-Allow-Origin: https://example.com'
es equivalente a . Si su sitio es accesible a través de ambos, debe tener ambos en sus encabezados de respuesta.'Access-Control-Allow-Origin: https://www.example.com'
GET
,POST
yHEAD
. Consulte el artículo de MDN vinculado en la respuesta para obtener detalles adicionales.Los números de puerto son diferentes.
Una solicitud se considera de dominio cruzado si alguno de los esquemas, el nombre de host o el puerto no coincide.
fuente