Ruby 401在rails 3应用程序中调用.ajax方法时未经授权
我正在通过twitter引导模式窗口传递一个ajax调用来更新应用程序中的数据。下面给出了ajax代码:Ruby 401在rails 3应用程序中调用.ajax方法时未经授权,ruby,ruby-on-rails-3,jquery,Ruby,Ruby On Rails 3,Jquery,我正在通过twitter引导模式窗口传递一个ajax调用来更新应用程序中的数据。下面给出了ajax代码: $(document).ready(function(){ var link=$('#link_hash').val(); $("#update_link").click(function(){ console.log("I'm here"); $.ajax({ url: "profiles/update_link",
$(document).ready(function(){
var link=$('#link_hash').val();
$("#update_link").click(function(){
console.log("I'm here");
$.ajax({
url: "profiles/update_link",
type: "POST",
dataType: "html",
data: {link: link,data: $('#link_hash').val() },
success: function(data) {
// some code
},
error: function(data1) {
// some code
}
});
});
});
我修改了route.rb文件,使其与控制器的“更新链接”方法相匹配。
我的方法中的代码如下所示:-
def update_link
@link=Link.find_by_link(params[:link])
@tlink=Link.find_by_link(params[:data])
logger.info "=========kkkkkkkkkkkkkk=================================#{@link.inspect}"
logger.info "=========kkkkkkkkkkkkkk=================================#{@tlink.inspect}"
logger.info "=========kkkkkkkkkkkkkk=================================#{params.inspect}"
respond_to do |format|
if @tlink.nil?
@link.update_attributes(:link => params[:data])
...some code....
else
...some code...
end
end
end
end
所以在服务器日志中显示-
Started POST "/profiles/update_link" for 127.0.0.1 at 2013-02-20 12:08:20 +0530
Processing by ProfilesController#update_link as HTML
Parameters: {"link"=>"9bfzjp", "data"=>"9bfzjpaaa"}
WARNING: Can't verify CSRF token authenticity
Completed 401 Unauthorized in 6ms
很明显,“logger.info”没有显示…现在搜索后,我能够解决警告,但仍然存在401…如何解决此问题
提前感谢….根据您的服务器日志,您没有传递CSRF令牌,因此rails会自动认为请求是恶意的,并将其标记为未验证。未验证请求的默认处理方式是重置会话。您是否可以注释掉
防止\u伪造
或将在\u过滤器之前跳过\u:验证\u真实性\u令牌
添加到您的控制器,以查看其是否正确
如果您希望在ajax请求中包含Authentity token(强烈建议),可以将其添加到ajax请求的标题中:
headers: {
'X-Transaction': 'POST Example',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
添加
在过滤之前跳过:验证用户代码>发送到控制器。我两次都试过了。当我在ajax调用中添加“header:”时,仍然显示401错误。但是,当我添加“跳过\u之前的\u过滤器:验证\u真实性\u令牌”时,它实际上正在执行任务,但仍然在firebug中显示“406不可接受”错误。无论如何,我的ajax回调代码中可能有问题。我正在调查。谢谢你的帮助。