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。关键是在会话 cookie 上默认设置过期日期,您可以在 config/initializers/session_store.rb 中这样做:

 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 回答