在Spotify(Javascript)中调用ajax后没有保存Cookie?

时间:2012-08-13 14:03:22

标签: javascript jquery ajax spotify

我正在研究Spotify应用程序,我也尝试使用JQuery的$ .ajax函数登录Reddit。登录工作正常,我可以在开发工具中看到响应cookie,但是当我尝试访问Reddit API的任何部分时,要求登录cookie随着调用一起发送,它就会失败,看起来cookie永远不会被发送。此外,查看开发工具的“Cookies”部分显示该网站(app)没有cookie。

这是登录电话:

$.ajax({
    type: 'POST',
    url: 'http://www.reddit.com/api/login',
    data: {
        'user': $user,
        'passwd': $password
    },
    success: function() {
        alert("logged in!");
    }
});

这是投票调用(从我在开发工具中看到的cookie复制的userhash):

$.ajax({
    type: 'POST',
    url: 'http://www.reddit.com/api/vote',
    data: {
        'id': $id,
        'dir': 1,
        'uh': $userhash
    },
    success: function(data) {
        console.log(data);
    }
});

1 个答案:

答案 0 :(得分:0)

使用jQuery 1.5.1中添加的 xhrFields 属性可能有所帮助:

登录电话:

$.ajax({
type: 'POST',
url: 'http://www.reddit.com/api/login',
data: {
    'user': $user,
    'passwd': $password
},
xhrFields: {
   withCredentials: true
},
success: function() {
    alert("logged in!");
}
});

投票:

$.ajax({
type: 'POST',
url: 'http://www.reddit.com/api/vote',
data: {
    'id': $id,
    'dir': 1,
    'uh': $userhash
},
xhrFields: {
   withCredentials: true
},
success: function(data) {
    console.log(data);
}
});

这将告诉它将XMLHTTPRequest对象的withCredentials属性设置为true,这是在使用跨域AJAX调用时传递cookie所必需的。