Frage

Ich verwende den folgenden Code Daten aus einer ASP.net MVC-Anwendung zu beantragen. Ich verwende auch TcpTrace so, dass ich die Anforderung / Antwort zu sehen.

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();
        }
    });
}

Mit allem IE funktioniert gut - der Inhaltstyp richtig eingestellt ist, um application / json. Allerdings unter Firefox 3.5.5, der Inhaltstyp fehlt:

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

Dies bewirkt, dass die ASP.net MVC XML zurückzukehren. Kann mir jemand erklären, warum Firefox nicht den Inhaltstyp senden?

War es hilfreich?

Lösung

Es sieht aus wie es ein Optionsanfrage sendet. Die normale Ursache für dieses Problem ist, wenn Ihr eine Ajax-Anforderung zu verwenden versuchen, auf eine andere Domain zu machen, die bestimmte Browser (Firefox, einschließlich - siehe hier ) nicht zulassen.

Können Sie klären, ob die URL Sie den antrag auf einer anderen Domäne ist. wenn dies der Fall ist, werden Sie haben JSONP verwenden oder einen Server-Proxy verwenden.

Andere Tipps

Ähnliche, was mit mir passiert. Wenn ich die gleiche Anfrage mit Fiddler Feuer funktioniert es, aber wenn ich es mit Firefox HttpRequester Feuer, tut es nicht. So verglich ich die Anfragen beide und es sieht aus wie HttpRequester die Request-Header ändert. Ich habe versucht, mehrere Möglichkeiten, um es zu arbeiten, auch die Raw Anfrage bearbeitet, aber immer noch, wenn ich die letzte Bitte prüfen Sie den Inhalt-Typ ist wie so dupliziert:

Content-Type: application/json, application/json

Und es fügt auch eine Reihe von anderen Header. Aber wenn ich die letzte Anfrage von Fiddler gemacht geprüft, es war nur:

Content-Type: application/json

Und damit hat es funktioniert.

Ich fand auch Bewertungen auf Mozilla Firefox Produkt-Support-Seite klagt über ähnliche Fehler. Aber ich erinnere mich daran gearbeitet, bevor sie in HttpRequester so etwas mit der neuesten Version zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top