我正在研究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);
}
});
答案 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所必需的。