【问题标题】:Set AJAX content type header in request from IE在来自 IE 的请求中设置 AJAX 内容类型标头
【发布时间】:2012-04-11 01:13:04
【问题描述】:

从 Internet Explorer 发送跨域 jquery ajax http 请求时,是否可以将 http 内容类型请求标头设置为 'application/json'?

我们正在尝试访问 REST WCF 服务,该服务在格式化响应时解释请求标头中的内容类型。现在,无论我们在请求头中放什么,它总是以 XML 格式返回数据。

我们已经尝试使用 jquery.ieco​​rs.js 插件,该插件扩展了 jquery ajax 调用以使用 XDomainRequest 对象,但这仍然忽略了在我们的 jquery ajax 调用中设置的内容类型。

我们的 ajax 调用如下所示:

makeGETRequest: function (requestUrl) {
    return $.ajax({
        type: "GET",
        url: requestUrl,
        contentType: 'application/json',
        dataType:'json',
        cache: false
    });
}

【问题讨论】:

    标签: jquery ajax internet-explorer rest content-type


    【解决方案1】:

    只需将内容类型作为参数之一传递给.ajax 方法:

    var retval = jQuery.ajax({
        type:'post',
        url: url,
        contentType: 'application/json',
        data: JSON.stringify(data)
    });
    

    【讨论】:

    • 感谢您的回答,很遗憾,我们仍在从服务电话中获取 xml。
    • 您可以发布您收到的回复吗?尤其是响应头和正文的一部分。
    • 您还应该检查您正在与之交谈的服务是否配置为使用 JSON 响应。见Suhas
    • 我们的问题是需要将“Accept”标头设置为“application/json”。你是第一个回答我问的问题,所以谢谢你,结果我没有问正确的问题,因为我们面临的问题:)
    【解决方案2】:

    是的,您可以使用contentType 参数:

    $.ajax({
        url: '/someurl',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify({ foo: 'bar' }),
        success: function(result) {
    
        }
    });
    

    请求已发送:

    POST /someurl HTTP/1.1
    Host: example.com
    Content-Length: 13
    X-Requested-With: XMLHttpRequest
    User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11
    Content-Type: application/json
    Accept: */*
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-US,en;q=0.8
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    
    {"foo":"bar"}
    

    【讨论】:

    • 感谢您的回答,很遗憾,我们仍在从服务电话中获取 xml。
    • 感谢您的回答,原来我们需要设置“接受”标题
    猜你喜欢
    • 2014-11-24
    • 2015-07-19
    • 2013-09-09
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2017-07-17
    • 2012-04-07
    相关资源
    最近更新 更多