繁体   English   中英

webpack jquery ajax rails 5 InvalidAuthenticityToken

[英]webpack jquery ajax rails 5 InvalidAuthenticityToken

当我将jQuery包含到我的项目中时,我使用Rails 5.1 + webpack

 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

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) {
   ...
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM