1

私は Spotify アプリに取り組んでおり、JQuery の $.ajax 関数を使用して Reddit にログインしようとしています。ログインは機能し、開発ツールで応答 Cookie を確認できますが、呼び出しでログイン Cookie を送信する必要がある Reddit の API の任意の部分にアクセスしようとすると失敗し、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 に答える