Estoy usando .htaccess para reescribir las URL y utilicé la etiqueta base html para que funcione.
Ahora, cuando trato de hacer una solicitud ajax, aparece el siguiente error:
XMLHttpRequest no se puede cargar
http://www.example.com/login.php. No hay encabezado 'Access-Control-Allow-Origin' presente en el recurso solicitado. Origen 'http://example.com', por lo tanto, no se permite el acceso.
javascript
jquery
ajax
cors
xmlhttprequest
Th3lmuu90
fuente
fuente

http://wordicious.comes un dominio diferente quehttp://www.wordicious.com/, por lo tanto, el error. Por cierto, si está funcionando ahora y regresó por sí solo, probablemente debería eliminar la pregunta.Respuestas:
Uso
addHeaderEn lugar de usar elsetHeadermétodo,*en la línea de arriba lo permitiráaccess to all domains.Por permitir
access to specific domain only:Mira esto
blog post.fuente
Por qué se genera el error:
El código JavaScript está limitado por la política del mismo origen , lo que significa que, desde una página en
www.example.com, solo puede realizar solicitudes (AJAX) a servicios ubicados exactamente en el mismo dominio, en ese caso, exactamentewww.example.com( noexample.com- sin elwww- owhatever.example.com).En su caso, su código Ajax está tratando de llegar a un servicio
http://wordicious.comdesde una página ubicada enhttp://www.wordicious.com.Aunque muy similares, son no el mismo dominio. Y cuando no están en el mismo dominio, la solicitud solo tendrá éxito si la respuesta del objetivo contiene un
Access-Control-Allow-Originencabezado.Como su página / servicio en
http://wordicious.comnunca se configuró para presentar dicho encabezado, se muestra ese mensaje de error.Solución:
Como se dijo, los dominios de origen (donde está la página con JavaScript) y el destino (donde está tratando de alcanzar JavaScript) deben ser exactamente los mismos.
Tu caso parece un error tipográfico. Parece
http://wordicious.comy enhttp://www.wordicious.comrealidad son el mismo servidor / dominio. Así que para fijar, escriba el destino y el origen por igual: hacerte Ajax páginas de solicitud de código / servicios quehttp://www.wordicious.comnohttp://wordicious.com. (Quizás coloque la URL de destino relativamente, como'/login.php', sin el dominio).En una nota más general:
Si el problema no es un error tipográfico como el de esta pregunta, la solución sería agregarlo
Access-Control-Allow-Original dominio de destino . Agregarlo depende, por supuesto, del servidor / idioma detrás de esa dirección. A veces, una variable de configuración en la herramienta hará el truco. Otras veces tendrá que agregar los encabezados a través del código usted mismo.fuente
Para el servidor .NET puede configurar esto en web.config como se muestra a continuación
Por ejemplo, si el dominio del servidor es http://live.makemypublication.com y el cliente es http://www.makemypublication.com , configúrelo en el servidor web.config como se muestra a continuación.
fuente
Si recibe este mensaje de error del navegador:
cuando intente hacer una solicitud Ajax POST / GET a un servidor remoto que está fuera de su control, olvide esta solución simple:
Lo que realmente necesita hacer, especialmente si solo usa JavaScript para hacer la solicitud de Ajax, es un proxy interno que tome su consulta y la envíe al servidor remoto.
Primero en su JavaScript, haga una llamada Ajax a su propio servidor, algo como:
Luego, cree un archivo PHP simple llamado proxy.php para envolver sus datos POST y agregarlos al servidor de URL remoto como parámetros. Te doy un ejemplo de cómo evito este problema con la API de búsqueda de hoteles de Expedia:
Haciendo:
Simplemente está haciendo la misma consulta pero en el lado del servidor y después de eso, debería funcionar bien.
fuente
Debe agregar esto al comienzo de su página php "login.php"
fuente
debe colocar las claves / valores de encabezado en la respuesta del método de opciones. por ejemplo, si tiene un recurso en http://midominio.com/miresource , entonces, en el código de su servidor, escriba
fuente
Básicamente, modifique la respuesta del encabezado API agregando los siguientes parámetros adicionales.
Access-Control-Allow-Credentials: verdadero
Acceso-Control-Permitir-Origen: *
Pero esta no es una buena solución cuando se trata de la seguridad.
fuente
La solución consiste en utilizar un proxy inverso que se ejecute en su host 'fuente' y que se reenvíe a su servidor de destino, como Fiddler:
Enlace aquí: http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
O un proxy inverso de Apache ...
fuente
Agregue esto a su archivo PHP o controlador principal
fuente
header("Access-Control-Allow-Credentials: true");Resuelto con la siguiente entrada en httpd.conf
fuente
Por favor, encuentre la función utilizada en XMLHTTPREQUEST en Javascript para configurar los encabezados de solicitud.
Referencia: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
fuente