gpt4 book ai didi

jquery - Rails 如何在不涉及表单的情况下在 Ajax 请求中发送真实性 token ?

转载 作者:行者123 更新时间:2023-12-01 00:02:25 26 4
gpt4 key购买 nike

由于多种原因,我需要通过 Ajax 向 Controller 发送 post 请求,但我无法通过表单来完成此操作,它必须是在 asset > javascript 中的文件内或标记之间编写的 JS Ajax 请求。

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

有没有办法遵守 CSRF 保护生成 token ,以便 Controller 对此感到满意?

到目前为止我的 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"=>"<p>testing text</p>"},
"id"=>"5"}

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

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

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

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

更新

与 Aniket 的解决方案不同。添加

authenticity_token: true 

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

最佳答案

只需在表单中传递一个带有真实性 token 值的隐藏字段,就可以了。

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

或者

<input type=hidden name="authenticity_token" value="<%= form_authenticity_token %>">

关于jquery - Rails 如何在不涉及表单的情况下在 Ajax 请求中发送真实性 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com