Cha*_*ory 5 cookies ajax jquery json ruby-on-rails
我正在制作一个基于PhoneGap的iPhone应用程序,它将连接到Rails后端.我正在使用jQuery为Rails服务器创建Ajax请求.我成功获得了服务器响应,但我遇到了获取cookie和管理会话的问题.
默认情况下,Rails在响应HTML请求时发送Set-cookie标头.当Rails向Ajax请求发送JSON响应时,似乎不会发生这种情况.
当向Rails服务器发出Ajax请求时,有没有办法发送Set-cookie头?
这是我在ApplicationController中的内容(我使用Devise进行身份验证):
def sign_in_and_redirect(resource_or_scope, resource=nil)
scope = Devise::Mapping.find_scope!(resource_or_scope)
resource ||= resource_or_scope
sign_in(scope, resource) unless warden.user(scope) == resource
respond_to do |format|
format.html {redirect_to stored_location_for(scope) || after_sign_in_path_for(resource) }
format.json {render :json => { :success => true, :session_id => request.session_options[:id], :current_user => current_user} }
end
Run Code Online (Sandbox Code Playgroud)
这是我用来发出Ajax请求的jQuery函数
$('#user_submit').click(function(){
$.ajax({beforeSend: function(xhrObj){ xhrObj.setRequestHeader("Accept","application/json");},
type: 'POST',
url: 'http://localhost:3000/users/sign_in',
data: "{'user':{'remember_me':'0','password':'pass1word','email':'email@company.com'}}",
contentType: "application/json",
dataType: "application/json",
complete: function(data, textStatus){
}
});
});
Run Code Online (Sandbox Code Playgroud)
我没有通过谷歌搜索得出一个明确的答案,所以希望你能提供帮助.我找到了这个,但没有发现它太有帮助:
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/66751d8e54f2fee6
看起来 Rails 在响应 Ajax JSON 请求时确实默认发送 Set-cookie 标头。问题是 Safari 不接受 cookie,因为它将其视为外部源。要接受 cookie,在本地 Safari 中测试基于 HTML 的 iPhone 应用程序时,您需要将 Safari 中的安全首选项“接受 cookie”更改为“始终”。
据我所知,在 Phonegap 中,您可以通过以下几种方式执行相当于此操作的操作:
http://groups.google.com/group/phonegap/browse_thread/thread/3290c5ac4e05be69?fwc=1 http://stackoverflow.com/questions/3709315
| 归档时间: |
|
| 查看次数: |
4164 次 |
| 最近记录: |