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请求

设置 Rails 应用程序以避免使用 CORS

Rails 4.2 强参数和解析 json put/update 上的更改属性

Rails 3 AJAX请求真实性令牌被忽略