0

ローカルで実行されている Rails アプリに対して単純な $.ajax リクエストを作成しようとしています。

コンソールからのリクエストは問題なく機能しますが、Safari 拡張機能から呼び出しを行うと、アプリは 401 Unauthorized を返します。ユーザーごとにAPIトークンを作成し、それをURL文字列に渡して認証する必要があるかどうか、またはログインしているにもかかわらずdeviseがリクエストを処理しない単純な理由があるかどうかはわかりません.私の推測では犯人は、コントローラーにある前のフィルターで、次のようになります。

before_filter: authenticate_user!

しかし、アプリにサインインすると 401 が返されます。参考までに、私が拡張機能から行っている呼び出しは次のとおりです。

$.ajax({                                                                                                                                                                                                        
                type: 'GET',                                                                                                                                                                                                 
                url: 'http://localhost:3000/playlists.json?callback=?,                                                                                                                                              
                dataType: 'jsonp',                                                                                                                                                                                                
                success: function(data) { console.log(data); },                                                                                                                                                                                       
                error: function() { console.log('Uh Oh!'); },
                jsonp: 'jsonp', 
                crossdomain: true                                                                                                                                               
            });

どんな助けでも大歓迎です。

4

1 に答える 1

0

わかりました。設定されている Cookie は「セッション」後に期限切れになるように設定されていました。これは基本的に、ページから移動するとすぐにセッションがなくなることを意味します。したがって、拡張機能はこの拡張 Cookie にアクセスできませんでした。キーは、config/initializers/session_store.rb で次のように行うことができるセッション cookie にデフォルトで有効期限を設定することでした:

 YourApp::Application.config.session_store :cookie_store, { 
    :key => '_yourapp_session',
    :expire_after => 60*24*60*60
}

Cookie の種類について詳しくは、http: //en.wikipedia.org/wiki/HTTP_cookie#Session_cookieをご覧ください。

于 2012-09-01T21:02:40.353 に答える