Der Accept HTTP-Header kann nicht ordnungsgemäß mit jQuery festgelegt werden



Answers

Mit jQuery 1.5+ können Sie die accept headers pro dataType festlegen, so dass Sie Folgendes tun können:

$.ajax({
    dataType: ($.browser.msie) ? "text" : "xml",
    accepts: {
        xml: "text/xml",
        text: "text/xml"
    }
});
Question

Ich versuche, den Accept HTTP-Header mit diesem jquery-Code auf "text / xml" zu setzen:

$.ajax({
    beforeSend: function(req) {
        req.setRequestHeader("Accept", "text/xml");
    },
    type: "GET",
    url: "[proper url]",
    contentType: "text/plain; charset=utf-8",
    dataType: ($.browser.msie) ? "text" : "xml",
    username: '---',
    password: '-------',                                
    success: function(data) {
        var xml;
        if (typeof data == "string") {
            alert("Data is string:" + data);
            xml = new ActiveXObject("Microsoft.XMLDOM");
            xml.async = false;
            xml.loadXML(data);
        } else {
            xml = data;
            alert("Data is not string:" + $(xml).text());
        }
        // Returned data available in object "xml"
        //alert("Status is: " + xml.statusText);
        $("#ingest_history").html($(xml).text());
    }              
});

In Firefox funktioniert es großartig.

Aber im IE scheint der Wert, den ich für den Accept-Header festlegen möchte, an das Ende angehängt zu werden, so dass es zu: Accept: */*, text/xml . Dies führt dazu, dass mein Ajax-Aufruf die HTML-Version zurückgibt, im Gegensatz zu der xml-Version, die ich möchte.

Kann jemand den Accept-Header in IE 8 richtig setzen / löschen?

Aktualisiert: Aus irgendeinem Grund erschienen die Sternchen nicht, als ich sie eingegeben habe. Der Accept Header in IE scheint zu sein: Accept: */*, text/xml .




Ich glaube nicht, dass IE (irgendeine Version) nett mit dem Accept-Header spielt. Siehe diesen Link: [ http://blogs.msdn.com/ieinternals/archive/2009/07/01/IE-and-the-Accept-Header.aspx]

Eine mögliche Lösung könnte sein, den User Agent zu überprüfen, ob es IE ist. Wenn dies der Fall ist, prüfen Sie, ob text / xml vorhanden ist.

Viel Glück!

Bearbeiten:

Opps auf der Verbindung. Meine Vorahnung war IE fügt immer die / und die Einstellung der Annahme Header fügt nur den gewünschten Mime-Typ nach der / .




Ich denke, dass das ursprüngliche Plakat auf diesen Link http://blogs.msdn.com/ieinternals/archive/2009/07/01/IE-and-the-Accept-Header.aspx haben könnte: http://blogs.msdn.com/ieinternals/archive/2009/07/01/IE-and-the-Accept-Header.aspx jedoch tut dies nicht erkläre das Verhalten, das du siehst.

IE hat nicht das Verhalten, das Sie beschreiben, und das Festlegen des Accept-Headers über XMLHTTPRequest sollte ordnungsgemäß funktionieren. Ich habe in IE8 getestet, um zu bestätigen.

Es ist möglich, dass es in Ihrer Version von jQuery ein Problem gibt, oder haben Sie vielleicht ein Plugin, das Ihren Traffic beeinträchtigt?






Related