为什么我的accept标头不断从application / json更改为* / *

时间:2013-05-21 22:21:21

标签: ajax asp.net-web-api http-headers cross-domain

我正在尝试使用'application / json'的接受标头向WebAPI服务发送ajax请求

当我在服务中设置断点时,我看到接受标题以“ / ”形式出现。这对我来说不起作用,因为我们的代码会检查我们的“已知”媒体类型,如果找不到则拒绝请求。

以下是ajax请求的当前状态:

$.ajax({
        url: requestUrl,
        type: 'GET',
        accept: {
            json: 'application/json'
        },
        success: function(response, status, xhr) {
            displayUsers(response);
        },
        error: function(xhr, status, exception) {
            alert(exception);
        }
    });

我在IE,Chrome和Firefox中尝试过它。全都一样。我正在使用科尔。

2 个答案:

答案 0 :(得分:0)

在您提出跨​​域请求时,您的响应(或OPTIONS响应,如果是预先发布的CORS)包含Access-Control-Allow-Headers: accept允许接受标头?我的猜测是你没有,浏览器切换到发送*/*的默认行为。

答案 1 :(得分:0)

我仍然不清楚真正的问题是什么,但我能够通过设置标头集合而不仅仅像通常那样的接受标头来解决它:

$.ajax({
        url: requestUrl,
        type: 'GET',
        headers: {
         'Accept' : 'application/json'
        },
        success: function(response, status, xhr) {
            displayUsers(response);
        },
        error: function(xhr, status, exception) {
            alert(exception);
        }
    });