无法使用 jQuery 正确设置 Accept HTTP 标头

2023-11-27

我正在尝试使用以下 jquery 代码将 Accept HTTP 标头设置为“text/xml”:

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

在火狐浏览器中效果很好。

但在 IE 中,我尝试为 Accept 标头设置的值似乎会附加到末尾,因此它变为:Accept: */*, text/xml。这导致我的 ajax 调用返回 html 版本,而不是我想要的 xml 版本。

有谁知道如何在 IE 8 中正确设置/清除 Accept 标头?

更新:出于某种原因,当我输入星号时,星号没有出现。 IE 中的 Accept 标头似乎是:Accept: */*, text/xml.


我也遇到了这个问题,不仅在 IE 中,而且在使用 jQuery 1.6.2 的 Chrome 和 Safari 中也遇到了问题。该解决方案似乎在我尝试过的所有浏览器(Chrome、Safari、IE、Firefox)中都能按预期工作。

$.ajax({
    headers: { 
        Accept : "text/plain; charset=utf-8",
        "Content-Type": "text/plain; charset=utf-8"
    },
    data: "data",
    success : function(response) {
        ...
    }
})

如果这仍然给您带来麻烦,请尝试这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 jQuery 正确设置 Accept HTTP 标头 的相关文章

随机推荐