Ajax PUT 请求导致 Rails 应用程序注销。为啥?
Posted
技术标签:
【中文标题】Ajax PUT 请求导致 Rails 应用程序注销。为啥?【英文标题】:Ajax PUT request results in logout in Rails app. Why?Ajax PUT 请求导致 Rails 应用程序注销。为什么? 【发布时间】:2012-03-29 23:11:21 【问题描述】:my Rails app 中的 2 个地方有 ajax 调用。 (一种用于 jQueryUI 拖放排序,一种用于更新评论帖子)。
每当发生这些调用时,用户都会被注销。没有明显的原因。 我正在使用omniauth-facebook 和omniauth-google-oauth2 进行身份验证。
如何解决这个问题?
下面是 ajax 调用的样子(coffeescript):
$.ajax(
type: 'put',
data: post_id: post.attr("id"),
dataType: 'json',
complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'),
url: '/posts/update/')
谢谢!
【问题讨论】:
weblog.rubyonrails.org/2011/2/8/… 好的,会话被重置,因为我的 ajax 请求没有真实性令牌。现在,如何使用资产咖啡脚本文件中的 ajax 请求来做到这一点... 【参考方案1】:我最终做了什么:
在application.html.erb布局头中,<%= csrf_meta_tags %>
下:
<%= javascript_tag "var AUTH_TOKEN = '#form_authenticity_token';" if protect_against_forgery?%>
在 assets/whatever.js.coffee 中
$.ajax (
type: 'put',
data: authenticity_token: AUTH_TOKEN,
dataType: 'json',
complete: -> post.children('.headpost').children('.buttons').removeClass('new_reply'),
url: '/posts/'+post.attr("id").slice(5) );
【讨论】:
感谢***.com/questions/7560837/…以上是关于Ajax PUT 请求导致 Rails 应用程序注销。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用方法对 link_to 的 ajax 请求:在禁用 javascript 的情况下放入 rails
NS-Vue/Rails 对 S3 存储桶的预签名 PUT 请求给出 403
Rails 3.2 `link_to`(在电子邮件中)与`method: :put`仍在产生GET请求