2012-08-13 50 views
1

我正在開發一個Spotify應用程序,我也試圖用JQuery的$ .ajax函數登錄Reddit。登錄工作,我可以看到開發工具中的響應cookie,但是當我嘗試訪問Reddit的API的任何部分,要求與呼叫一起發送登錄cookie時,它會失敗,並且看起來像該cookie永遠不會被髮送。另外,查看開發工具的「Cookies」部分,表明該網站(應用程序)沒有Cookie。Cookie在Spotify(Javascript)中的ajax調用後未保存?

這裏的登錄電話:

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

而這裏的投票調用(userhash從cookie複製的,我可以在開發工具見):

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

回答

0

使用xhrFields中添加財產jQuery 1.5.1可能有所幫助:

登錄電話:

$.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。

+0

我試過了,它似乎沒有改變行爲。我是否需要改變有關通話的其他內容? – riggspc 2012-08-20 17:51:38