Estoy intentando conectar un script a la aplicación World-Wide Telescope de Microsoft. Este último escucha los comandos en el puerto 5050. Se ejecuta en la misma máquina que el navegador (Chrome en este momento, pero por lo que puedo decir, el comportamiento es el mismo con Firefox 7 e IE 9).
Estoy enviando un encabezado "Access-Control-Allow-Origin: *" con el archivo html original para intentar eliminar las restricciones XSS como mi problema.
Mi código para acceder a WWT es el siguiente:
$.ajax({
type: 'POST',
url: url,
data: data,
crossDomain: true,
success: success,
dataType: dataType
});
url en este caso es "http: //127.0.0.1: 5050 / layerApi.aspx? cmd = new & ..." (obviamente ... es una abreviatura aquí para algunos parámetros adicionales).
Mirando los diagnósticos de red en Chrome, puedo ver esto:
Request URL:http://127.0.0.1:5050/layerApi.aspx?cmd=new&...
Request Headersview source
Accept:application/xml, text/xml, */*; q=0.01
Content-Type:application/x-www-form-urlencoded
Origin:http://gwheeler4
Referer:http://gwheeler4/conceptconnect.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
La solicitud está saliendo. Veo que WWT crea una nueva capa. Sin embargo, no recibo una devolución de llamada. Si agrego una devolución de llamada de error que se llama, pero la propiedad de error en el objeto jqXHR es simplemente "error" y el estado es 0. Si miro la solicitud de red en Chrome, veo "(cancelado)" como el estado y no hay respuesta .
Si tomo esa misma URL y la pego en una nueva pestaña del navegador, puedo ver que la respuesta es el XML esperado.
Por supuesto, una diferencia aquí es que esto es un GET, no un POST, pero lo he intentado en mi script y no hace ninguna diferencia.
Estoy bastante perplejo por esto y agradecería cualquier idea nueva.
fuente
error
devolución de llamada para ver si regresa con un error?Respuestas:
Si alguien más se encuentra con esto, el problema que tuvimos fue que estábamos haciendo la solicitud ajax desde un enlace y no evitando que se siguiera el enlace. Entonces, si está haciendo esto en un
onclick
atributo, asegúrese de hacerloreturn false;
también.fuente
return false
al final de suonsubmit
atributo."return false;"
le dice a los formularios y enlaces que cancelen la acción. Esto fue originalmente diseñado para la validación de formularios de JavaScript, donde una función de validación devolvería falso si el formulario no era válido, lo que impedía que se enviara.e.preventDefault();
, dondee
es elonclick
parámetro de evento.Si está utilizando Chrome, no puede ver suficiente información en el panel de red estándar de Chrome para determinar la causa raíz de una
(canceled)
solicitud.Debe usar el
chrome://net-internals/#events
que le mostrará los detalles sangrientos de la solicitud que está enviando, incluidos los redireccionamientos ocultos / información de seguridad sobre las cookies que se envían, etc.Por ejemplo, lo siguiente muestra una redirección que no estaba viendo en el seguimiento de la red, debido a que mis cookies no se envían entre subdominios:
t=1374052796448 [st= 1] +URL_REQUEST_START_JOB [dt=261] --> load_flags = 143540481 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VALIDATE_CACHE | VERIFY_EV_CERT) --> method = "GET" --> priority = 2 --> url = "https://...." ... t=1374052796708 [st=261] HTTP_TRANSACTION_READ_RESPONSE_HEADERS --> HTTP/1.1 302 Moved Temporarily Content-Type: text/html Date: Wed, 17 Jul 2013 09:19:56 GMT ... t=1374052796709 [st=262] +URL_REQUEST_BLOCKED_ON_DELEGATE [dt=0] t=1374052796709 [st=262] CANCELLED t=1374052796709 [st=262] -URL_REQUEST_START_JOB --> net_error = -3 (ERR_ABORTED)
fuente
En mi caso,
type='submit'
cuando estaba enviando el formulario, la página se estaba recargando antes de que se activara el ajax, por lo que debía tener una solución simpletype="button"
. Si no especifica un tipo, essubmit
de forma predeterminada, por lo que debe especificartype="button"
type='submit'
=>type='button'
O
Sin tipo =>
type='button'
fuente
Tuve un problema similar. En mi caso, estoy tratando de usar un servicio web en un servidor apache + django (el servicio fue escrito por mí mismo). Estaba teniendo el mismo resultado que tú: Chrome dice que se canceló mientras FF lo hace bien. Si intentara acceder al servicio directamente en el navegador en lugar de ajax, también funcionaría. Buscando en Google, descubrí que algunas versiones más nuevas de apache no estaban configurando la longitud de la respuesta correctamente en los encabezados de respuesta, así que hice esto manualmente. Con django, todo lo que tenía que hacer era:
response['Content-Length'] = len(content)
Si tiene control sobre el servicio al que está intentando acceder, averigüe cómo modificar el encabezado de respuesta en la plataforma que está utilizando; de lo contrario, tendría que ponerse en contacto con el proveedor de servicios para solucionar este problema. Aparentemente, FF y muchos otros navegadores pueden manejar esta situación correctamente, pero los diseñadores de Chrome decidieron hacerlo según lo especificado.
fuente
Tuve un problema similar. Usando chrome: // net-internals / # events pude ver que mi problema se debía a una redirección silenciosa. Mi solicitud de obtención se estaba disparando en un script de carga. La URL tenía el formato " http://example.com/inner-path " y el 301 redirigía permanentemente a "/ inner-path". Para solucionar el problema, acabo de cambiar la URL a "/ inner-path" y eso solucionó el problema. Todavía no sé por qué un guión que funcionó hace una semana de repente me estaba dando problemas ... Espero que esto ayude a alguien
fuente
(Usando formularios web ASP.NET)
Mi problema era que estaba tratando de disparar Ajax del evento de clic de un botón de envío que tenía una configuración de evento de clic del lado del servidor. Tuve que hacer que el botón sea solo un botón simple (es decir
<input type="button">
)fuente
Tuve el mismo problema, para mí estaba creando el iframe de manera temporal y estaba eliminando el iframe antes de que el ajax se completara, por lo que el navegador cancelaría mi solicitud de ajax.
fuente
Ampliando la respuesta de @ Kazetsukai, puede encontrarse con este problema si está haciendo su solicitud AJAX desde el usuario que hace clic en un enlace.
Si configura su enlace así:
<a href="#" onclick="soAjax()">click me!</a>
Y luego un controlador de JavaScript como el siguiente:
Para evitar que su navegador siga el enlace y cancele cualquier solicitud en curso, debe agregar
return false
oe.preventDefault()
detener la propagación del evento de clic:soAjax() { $.ajax({ ... etc ... }); return false; }
O:
fuente
Hay dos posibilidades cuando se descarta la solicitud AJAX (si no es una solicitud de origen cruzado):
Solución para 1) : agregue
return false;
oe.preventDefault();
en el controlador de eventos.Solución para 2) : agregue la opción de tiempo de espera mientras forma la solicitud AJAX. Ejemplo a continuación.
$.ajax({ type: 'POST', url: url, timeout: 86400, data: data, success: success, dataType: dataType });
Para solicitudes de origen cruzado, marque los encabezados HTTP de intercambio de recursos de origen cruzado (CORS).
fuente
Recibí este error al realizar una solicitud usando http a una URL que requería https. Supongo que la llamada ajax no está manejando la redirección. Este es el caso incluso con la opción crossDomain ajax establecida en true (en JQuery 1.5.2).
fuente
En mi caso, el mod-rewrite de I Apache coincidía con la url y redirigía la solicitud a https.
Mire la solicitud en chrome: // net-internals / # events.
Mostrará un registro interno de la solicitud. Compruebe si hay redireccionamientos.
fuente
Tuve el mismo problema, pero en mi caso resultó ser un problema de cookies. Los chicos que trabajaban en el back-end habían cambiado la ruta de la cookie JSESSIONID que se establece cuando iniciamos sesión en nuestra aplicación, y yo tenía una cookie antigua con ese nombre en mi computadora, pero con la ruta anterior. Entonces, cuando intenté iniciar sesión en el navegador (Chrome), envié dos cookies llamadas JSESSIONID, con valores diferentes, al servidor, lo que comprensiblemente lo confundió, por lo que canceló la solicitud. Eliminar las cookies de mi computadora lo solucionó.
fuente
Tuve este error de una manera más espeluznante: la pestaña de red y los eventos chrome: // net-internals / # no mostraron la solicitud después de que se completó el js. Al pausar js en el callcack de error, la pestaña de red mostró la solicitud como (cancelada). Se solicitó constantemente para exactamente una (siempre la misma) de varias solicitudes similares en una página web. ¡Después de reiniciar Chrome, el error no volvió a aparecer!
fuente
Tuve el cancelado en Firefox . Algunas llamadas ajax funcionan perfectamente bien para mí, pero fallaron para el compañero de trabajo que realmente tuvo que usarlo.
Cuando comprobé esto a través de los trucos de Chrome mencionados anteriormente, no encontré nada sospechoso. Al verificarlo en Firebug, mostró la animación de 'cargando' después de las dos llamadas malévolas, y sin pestaña de resultados.
La solución fue mega simple: ir al historial, encontrar el sitio web, hacer clic derecho -> olvidar el sitio web.
Olvidar, no borrar.
Después de eso, ya no hay problemas. Supongo que tiene algo que ver con el .htaccess.
fuente
En mi caso, fue la barra diagonal que faltaba en la URL. Agregar la barra diagonal resolvió mi problema.
fuente
Para el caso de Dropzone.js. En mi caso, se debió a que el valor de la
timeout
opción era demasiado bajo de forma predeterminada. Así que auméntelo según sus necesidades.{ // other dropzone options timeout: 60000 * 10, // 10 minutes ... }
fuente
Tuve este problema con una red 3G en particular.
Siempre fallaría en las solicitudes DELETE con
net_error = -101
en chrome: // net-internals / # events.Otras redes funcionaron bien, así que supongo que había un servidor proxy defectuoso o algo así.
fuente