【问题标题】:webpack jquery ajax rails 5 InvalidAuthenticityTokenwebpack jquery ajax rails 5 InvalidAuthenticityToken
【发布时间】:2023-03-23 02:23:01
【问题描述】:

我使用 Rails 5.1 + webpack 当我使用

将 jQuery 包含到我的项目中时
 plugins: [
    new webpack.ProvidePlugin({
        'jQuery': 'jquery',
        '$': 'jquery',
        'global.jQuery': 'jquery'
    })
  ]

并尝试使用 jQuery.ajax PUT、POST 或 DELETE 请求,例如

var that = this;
$.ajax({
  url: navigator_item.url,
  method: 'DELETE',
  success: function(res) {
   ...
  }
});

我收到ActionController::InvalidAuthenticityToken

但是,当我在 app.js 文件中包含带有下一行的 jQuery 时

import $ from 'jquery'
window.jQuery = $;
window.$ = $; // lazy fix if you want to use jQuery in your inline scripts.

这个在 shared.js 中

module.exports = {
  resolve: {
    alias: {
        'jquery': 'jquery/src/jquery'
    }
  }

jQuery.ajax 工作正常。

当您将 jQuery 包含为插件时,有没有办法使用 jQuery.ajax

【问题讨论】:

    标签: javascript jquery ajax webpack ruby-on-rails-5


    【解决方案1】:

    ActionController::InvalidAuthenticityToken 与 jQuery 无关。

    您必须在所有PUTPOSTDELETE 请求中传递authenticity_token 参数。

    为此,您通常可以使用 $('[name="csrf-token"]')[0].content 从标头中获取它

    所以你的请求看起来像:

    var that = this;
    $.ajax({
      url: navigator_item.url,
      data: { authenticity_token: $('[name="csrf-token"]')[0].content},
      method: 'DELETE',
      success: function(res) {
       ...
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 2018-11-02
      • 2019-06-12
      • 2017-11-13
      • 2016-11-14
      • 1970-01-01
      • 2017-11-06
      • 2017-04-12
      • 1970-01-01
      相关资源
      最近更新 更多