1

我正在开发一个 Spotify 应用程序,并且我也在尝试使用 JQuery 的 $.ajax 函数登录 Reddit。登录有效,我可以在开发工具中看到响应 cookie,但是当我尝试访问 Reddit 的 API 的任何部分时,它需要通过调用发送登录 cookie,它失败了,看起来 cookie 从未被发送。此外,查看开发工具的“Cookie”部分显示该站点(应用程序)没有 Cookie。

这是登录调用:

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

这是投票电话(从我可以在开发工具中看到的 cookie 复制的用户哈希):

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

1 回答 1

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 所必需的。

于 2012-08-20T12:44:59.957 回答