<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
<script>
$.get("http://example.com/", function(data) {
alert(data);
});
</script>
realiza una solicitud de OPCIONES a esa URL, y luego la devolución de llamada nunca se llama con nada.
Cuando no es dominio cruzado, funciona bien.
¿No debería jQuery simplemente hacer la llamada con un <script>
nodo y luego hacer la devolución de llamada cuando está cargada? Entiendo que no podré obtener el resultado (ya que es dominio cruzado), pero está bien; Solo quiero que la llamada pase. ¿Es esto un error o estoy haciendo algo mal?
jquery
xmlhttprequest
http-get
http-options-method
Paul Tarjan
fuente
fuente
Respuestas:
De acuerdo con MDN ,
fuente
Las OPCIONES son de http://www.w3.org/TR/cors/ Ver http://metajack.im/2010/01/19/crossdomain-ajax-for-xmpp-http-binding-made-easy/ para un poco más de información
fuente
Si estás intentando publicar
Asegúrese de
JSON.stringify
sus datos de formulario y envíe comotext/plain
.fuente
No creo que jQuery simplemente haga una solicitud JSONP cuando recibe una URL como esa. Sin embargo, hará una solicitud JSONP cuando le diga qué argumento usar para una devolución de llamada:
Depende completamente del script receptor hacer uso de ese argumento (que no tiene que llamarse "jsoncallback"), por lo que en este caso la función nunca será llamada. Pero, dado que declaró que solo desea que se ejecute el script en metaward.com, eso sería suficiente.
fuente
De hecho, las solicitudes AJAX (XMLHttp) entre dominios no están permitidas por razones de seguridad (piense en buscar una página web "restringida" desde el lado del cliente y enviarla de vuelta al servidor; esto sería un problema de seguridad).
La única solución son las devoluciones de llamada. Esto es: crear un nuevo objeto de script y apuntar el src al JavaScript del lado final, que es una devolución de llamada con valores JSON (myFunction ({data}), myFunction es una función que hace algo con los datos (por ejemplo, almacenarlo en una variable).
fuente
Simplemente cambie "application / json" a "text / plain" y no olvide el JSON.stringify (solicitud):
fuente
Yo tuve el mismo problema. Mi solución fue agregar encabezados a mi script PHP que están presentes solo en el entorno de desarrollo.
Esto permite solicitudes de dominio cruzado:
Esto le indica a la solicitud de verificación previa que está bien que el cliente envíe los encabezados que desee:
De esta forma no hay necesidad de modificar la solicitud.
Si tiene datos confidenciales en su base de datos de desarrollo que podrían filtrarse, podría pensarlo dos veces.
fuente
En mi caso, el problema no estaba relacionado con CORS ya que estaba emitiendo un jQuery POST al mismo servidor web. Los datos eran JSON pero había omitido el parámetro dataType: 'json'.
No tenía (ni agregué) un parámetro contentType como se muestra en la respuesta de David Lopes arriba.
fuente
Parece que Firefox y Opera (también probado en Mac) no les gusta el dominio cruzado de esto (pero Safari está bien con eso).
Puede que tenga que llamar a un código del lado del servidor local para curvar la página remota.
fuente
Pude solucionarlo con la ayuda de los siguientes encabezados
Si está en Nodejs, aquí está el código que puede copiar / pegar.
fuente