Pregunta

Estoy usando el siguiente código para solicitar datos de una aplicación MVC de ASP.net. También estoy usando TcpTrace para poder ver la solicitud / respuesta.

if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
        data: '{}',
        dataType: 'json',
        cache: false,
        beforeSend: function(XMLHttpRequest) { ShowLoading(); },
        success: function(data, textStatus) {
            ShowJobSummaryList(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            HideLoading();
            ShowStatus('unable to retrieve job summary list');
            alert(XMLHttpRequest.statusText);
            alert(textStatus);
        },
        complete: function(XMLHttpRequest, textStatus) {
            HideLoading();
        }
    });
}

Usar IE todo funciona bien: el tipo de contenido está configurado correctamente en application / json. Sin embargo, en Firefox 3.5.5, falta el tipo de contenido:

OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

Esto hace que ASP.net MVC devuelva XML. ¿Alguien puede explicar por qué Firefox no envía el tipo de contenido?

¿Fue útil?

Solución

Parece que está enviando una solicitud de opciones. La causa normal de este problema es cuando intenta utilizar una solicitud de ajax a otro dominio que ciertos navegadores (incluido firefox - vea here ) no permitir.

¿Puede aclarar si la URL a la que está haciendo la solicitud se encuentra en otro dominio? Si este es el caso, tendrá que usar jsonp o usar un servidor proxy.

Otros consejos

Algo similar está sucediendo conmigo. Cuando lanzo la misma solicitud con Fiddler, funciona pero cuando lo hago con Firefox HttpRequester, no lo hace. Así que comparé ambas solicitudes y parece que HttpRequester cambia los encabezados de solicitud. Intenté varias formas de hacerlo funcionar, incluso edité la solicitud Sin formato, pero aún cuando verifico la solicitud final, el tipo de contenido se duplica así:

Content-Type: application/json, application/json

Y también agrega un montón de otros encabezados. Pero cuando verifiqué la solicitud final hecha por Fiddler fue simplemente:

Content-Type: application/json

Y por lo tanto funcionó.

También encontré comentarios en la página de soporte del producto Mozilla Firefox quejándose de un error similar. Pero recuerdo que esto funcionó antes en HttpRequester, así que tengo algo que ver con la última versión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top