【问题标题】:Ajax file conflicting, logging out automaticallyAjax文件冲突,自动注销
【发布时间】:2023-03-30 19:42:01
【问题描述】:

我有一个rails 应用程序,它有一个页面,其中包含一个已部分ajaxed 的表。最初的目标是让它增加时间实体中的容量属性。下面是表格Image 的视觉外观。当您单击加号/减号按钮时,容量属性会使用 PUT 请求增加。您可以看到 show.html.erb Pastie 的代码。在第 82 行,您将看到我的 $.put。现在我的 ajax_request_PUT 有以下代码:

function _ajax_request(url, data, callback, type, method) {
    return jQuery.ajax({
        type: 'PUT',
        url: "slot_days/show",
        data: data,
        success: function(result)
        {
            callback();
        }
    });
}

jQuery.extend({
    put: function(url, data, callback, type) {
        return _ajax_request(url, data, callback, type, 'PUT');
}});  

我有一个 show.html.erb 页面,其中包含此 ajax_request_PUT 文件,方法是执行 <%=javascript_include_tag%>。将它包含在我的 show.html.erb 文件中后,我注意到我得到: PUT http://localhost:300/XXXX/xxx/show 401 Unauthorized 78ms after I click the "+" button- 我发现这意味着该页面正在尝试成为在您登录之前无法加载访问的内容。令我惊讶的是,这很奇怪。这是因为要使用此应用程序,您无论如何都必须登录。当我离开页面时,我被要求重新登录,我似乎无法确定它为什么这样做。我所知道的是,我还在终端中收到以下消息:WARNING: Can't verify CSRF token authenticity 我删除了<%=javascript_include_tag%>,发现这个问题消失了,但是我的表不再部分 ajaxed。有没有人遇到过类似的问题?

【问题讨论】:

    标签: javascript jquery ajax ruby-on-rails-3 csrf


    【解决方案1】:

    我遇到了同样的问题,它是由 javascript 引起的,并且仅在 MSIE 中。解决方案是将您的 javascript 移动到文档的头部或 <body> 标记内,但要尽可能地放在顶层。

    【讨论】:

    • 感谢您的回复,我刚刚打开了application.html.erb,头部有<%= csrf_meta_tag %>。现在的问题是,将它移到那里并且没有任何其他冲突是否安全?
    • 我尝试将它放在 中,还尝试了 <body> 这没有用。
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多