当前位置:  开发笔记 > 编程语言 > 正文

Rails如何在没有涉及表单的情况下在Ajax请求中发送真实性标记?

如何解决《Rails如何在没有涉及表单的情况下在Ajax请求中发送真实性标记?》经验,为你挑选了1个好方法。

由于几个原因,我需要通过Ajax向控制器发送一个post请求,我不能涉及一个表单,它必须是在资源> javascript或标签之间的文件中编写的JS Ajax请求.

我写了一个似乎正确传递数据的函数.但是,它没有传递有效的真实性令牌,因此不允许请求通过.

有没有办法遵守CSRF保护生成令牌,以便控制器满意呢?

到目前为止,我的Ajax功能是:

  var functionOne = function() {
  var $form = $('#'  + tinyMCE.activeEditor.formElement.id);
  var action = $form.attr('action')
  $.ajax({
    method: "POST",
    url: action,
    data: $form.serialize(),
    dataType: 'script',
  });
};

此表格通过以下参数

{"utf8"=>"?", "_method"=>"patch", "open_ender"=>
  {"answer_id"=>"4",
  "content"=>"

testing text

"}, "id"=>"5"}

我已经尝试在Ajax对象中包含以下行

authenticity_token: $('meta[name=csrf-token]').attr('content'),

这在应用程序布局中没有成功

$(function(){
  $.ajaxSetup({
  headers: { 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') }
  });
});

UPDATE

公寓来自Aniket的解决方案.添加

authenticity_token: true 

在表单选项哈希也解决了这个问题



1> Aniket Rao..:

只需在表单内部传递一个带有真实性令牌值的隐藏字段即可.

<%= f.hidden_field :authenticity_token, value: form_authenticity_token %>

要么


推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有