如何在ajax请求中包含标头?

时间:2013-09-11 16:01:31

标签: ajax header

我需要在对YouTube API的ajax调用中包含带有刷新令牌的标头。我正在尝试发送删除请求,以删除我帐户中的电影。这是我点击按钮时发出的ajax调用

jQuery.ajax({
        type: 'DELETE',
        // must set api key
        url: 'https://www.googleapis.com/youtube/v3/videos?id='+ thisUniqueID + '&key=904907387177-qe517sq5dmmpebckjbmrhv4gvac9e2d1.apps.googleusercontent.com',
        success: function() {
        alert('your video has been deleted');
        },
        error: function() {
        alert('error processing your requst');
        }
    }); 

我收到401(未经授权的)erorr返回,似乎我需要在通话中包含我的访问令牌。我正在玩google api游乐场查看请求和响应,这就是显示“请求”被发送出去

DELETE https://www.googleapis.com/youtube/v3/videos?id=3242343&key={YOUR_API_KEY}

Authorization:  Bearer "access token"
X-JavaScript-User-Agent:  Google APIs Explorer

现在,根据该请求,看起来有与请求一起发送的标头,其中包含访问令牌。这一定是我收到401错误的原因。如何将这些标头包含在我的ajax请求中,以便我的访问令牌与请求一起传递?感谢

3 个答案:

答案 0 :(得分:4)

我可以使用以下代码传递标题:

    jQuery.ajax({
        type: 'DELETE',
        // must set api key
        url: 'https://www.googleapis.com/youtube/v3/videos?id='+ thisUniqueID +'&key=api_key_here',
beforeSend: function(xhr){xhr.setRequestHeader('Authorization', 'Bearer access_token_here');},
        success: function() {
        alert('your video has been deleted');
        },
        error: function() {
        alert('error processing your request');
        }
    }); 

答案 1 :(得分:2)

您可以使用beforeSend方法和request.setRequestHeader。请查看官方文档here

P.S。我应该将其作为评论发布吗?

答案 2 :(得分:0)

尝试添加参数数据。

jQuery.ajax({
    type: 'DELETE',
    data: 'key=' + {YOUR_API_KEY},
    // must set api key
    url: 'https://www.googleapis.com/youtube/v3/videos?id='+ thisUniqueID + '&key=904907387177-qe517sq5dmmpebckjbmrhv4gvac9e2d1.apps.googleusercontent.com',
    success: function() {
    alert('your video has been deleted');
    },
    error: function() {
    alert('error processing your requst');
    }
});