jQuery AJAX调用导致错误状态403 forbidden

时间:2017-03-19 07:51:18

标签: javascript jquery ajax asp.net-mvc api

我试图对API进行简单的jquery ajax调用:

我的代码:

$.ajax({
        origin: "*",
        url: 'http://example/test',
        type: 'get',
        contentType: 'application/json; charset=utf-8',
        dataType: 'jsonp',
        crossDomain: true,
        beforeSend: function (xhr) {
                        xhr.setRequestHeader("API_KEY", 'xxx');
                        xhr.setRequestHeader("Authorization", 'xxx');
                    },
                    success: function (data) {
                    });
                },
                error: function () {
            }
        });

Api正确使用授权并返回正确的数据,但在我从JQuery ajax调用它时会出现错误403 Forbidden。

响应标题:

  

HTTP / 1.1 403禁止   缓存控制:无缓存   Pragma:没有缓存   内容类型:text / javascript;字符集= utf-8的   到期:-1   服务器:Microsoft-IIS / 8.5   X-AspNet-Version:4.0.30319   X-Powered-By:ASP.NET   日期:2017年3月19日星期日格林威治标准时间13:00:19   内容长度:127

请求标题:

  

接受: /   Accept-Encoding:gzip,deflate,sdch   接受语言:EN-US,EN; Q = 0.8   缓存控制:无缓存   连接:保持活跃   主持人:SP16-应用:2525   附注:无缓存   引用者:http://xxx/test

1 个答案:

答案 0 :(得分:0)

请注意,您无法为jsonp请求发送标头,这是一个脚本请求。您确定要jsonp而不是json吗?

GET没有请求contentType,因为没有正在发送的正文内容。

此外,你在这里有一个错字,但是,我想,这只是StackOverflow答案的错字:

xhr.setRequestHeader("API_KEY", 'xxx;

更改为

xhr.setRequestHeader("API_KEY", 'xxx';

另请参阅this answer