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

Posted

技术标签:

【中文标题】在 Spotify(Javascript)中进行 ajax 调用后没有保存 Cookie?【英文标题】:Cookie not being saved after an ajax call in Spotify (Javascript)? 【发布时间】:2012-08-09 18:38:59 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我试过了,但它似乎根本没有改变行为。我需要更改有关通话的其他任何内容吗?

以上是关于在 Spotify(Javascript)中进行 ajax 调用后没有保存 Cookie?的主要内容,如果未能解决你的问题,请参考以下文章

使用 spotify-web-api-js 在 javascript 中获取 Spotify 艺术家的热门曲目

Spotify javascript API - 在播放列表中获取歌曲的类型

在 Spotify API Javascript + 添加到服务器中搜索曲目

setImage 不使用 Spotify Apps API 在 JavaScript 中显示新图像

Spotify 应用程序中的 Facebook Javascript SDK,可能吗?

允许前端 JavaScript POST 请求到 https://accounts.spotify.com/api/token 端点