Rails 3设计了401个未经授权的ajax呼叫
我遇到了类似这个问题的问题: jQuery Ajax调用Rails 3获得401 Unauthorized Request
我已将token_authenticatable添加到我的设计模型中。
在我对ajax调用的操作中:
def rate params[:kon][:IP] = request.remote_ip params[:kon][:tag_id] = params[:id] @konkurrencer = Tagrating.new(params[:kon]) @konkurrencer.save @konkurrencer.tag.rating_score += params[:kon][:ratings].to_i @konkurrencer.tag.ratings += 1 @konkurrencer.save render :nothing => true end
如何validationajax调用?
如何获取当前用户的令牌密钥。 我试过了:
作者发布这是一个CSRF令牌问题。 虽然发布的解决方案有效,但它并不安全。 在这个问题中提出了一个更好的解决方案: https : //stackoverflow.com/a/8175979/696610
我在这里复制它:
你应该做这个:
-
确保布局中包含
<%= csrf_meta_tag %>
-
添加
beforeSend
到所有ajax请求以设置如下所示的标题:
$.ajax({ url: 'YOUR URL HERE', type: 'POST', beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, data: 'someData=' + someData, success: function(response) { $('#someDiv').html(response); } });
感谢https://stackoverflow.com/users/1052893/chau-hong-linh的答案。
它没有设计401授权错误,而是CSRF令牌。
刚刚为我的行动禁用了它:
protect_from_forgery :except => :rate
另一种方法,如果你只能访问url(假设你使用的是插件)
var csrf_token = $('meta[name=csrf-token]').attr('content'); var csrf_param = $('meta[name=csrf-param]').attr('content'); var params; if (csrf_param !== undefined && csrf_token !== undefined) { params = csrf_param + "=" + encodeURIComponent(csrf_token); } var url = "/your/path?" + params
- 在私有控制器方法中返回redirect_to
- bcrypt错误:设计ruby 2.0和rails 4.0
- 在我的应用程序上使用Devise注销问题
- 将设计sign_in表单设置为Twitter Bootstrap Modal
- Rails设计 – current_user是零
- 显示特定用户的post?
- Rails 3 – 基本的http身份validation与使用iphone的身份validation令牌
- Rails 4设计3.1.1 ActionController :: Devise中的UnknownFormat :: RegistrationsController #new
- Devise中的NoMethodError :: SessionsController#在使用“after_sign_in_path_for(resource)”时创建