当前位置: 首页 > 面试题库 >

用AJAX将真实性令牌发送到Rails的正确方法

金毅
2023-03-14
问题内容

这有效,但是由于缺少真实性令牌而被停止:

$(".ajax-referral").click(function(){
  $.ajax({type: "POST", url: $(this).parent("form").attr("action"), dataType: "script"});
  return false;
});

所以我尝试像这样添加它:

$(".ajax-referral").click(function(){
  $.ajax({type: "POST", url: $(this).parent("form").attr("action") + "?&authenticity_token=" + AUTH_TOKEN, dataType: "script"});
  return false;
});

并且它正确地将auth_token作为参数传递,但似乎丢失了其余的表单。

无论如何要完成发送有效的表单数据以及真实性令牌的工作?

这是一个Rails环境。我脑子里有这个。

= javascript_tag "var AUTH_TOKEN = '#{form_authenticity_token}';" if protect_against_forgery?

我尝试过的事情

1。

= hidden_field :authenticity_token, :value => form_authenticity_token

2。

$.ajax({type: "POST", url: $(this).parent("form").attr("action"), dataType: "script", authenticity_token: AUTH_TOKEN});

3。

// Always send the authenticity_token with ajax
$(document).ajaxSend(function(event, request, settings) {
    if ( settings.type != 'GET' ) {
        settings.data = (settings.data ? settings.data + "&" : "")
            + "authenticity_token=" + encodeURIComponent( AUTH_TOKEN );
    }
});

问题答案:

实际上,您正在读取actionform
的属性并向其发送ajax请求。要发送表单数据,您必须提交表单,也可以序列化表单数据并以ajax请求的形式发送,例如

$(".ajax-referral").click(function(){
  $.ajax({
      type: "POST", 
      url: $(this).parent("form").attr("action") + "?&authenticity_token=" + AUTH_TOKEN, 
      data:$(this).parent("form").serialize(),
      dataType: "script"
      });
  return false;
});

这样做将序列化表单数据并将其与ajax请求一起发送,并且已经通过查询字符串发送了真实性令牌



 类似资料:
  • 我在开发一个新的Rails4应用程序(在Ruby 2.0.0-P0上)时遇到了一些真实性令牌问题。 在编写响应json的控制器时(使用类方法),我使用了操作,当我试图使用创建记录时,我开始获取异常。 我确保设置了,并使用设置了数据,但仍然没有成功。 编辑:我只是尝试在一个新的Rails4应用程序中使用脚手架创建一个新记录,而没有做任何更改,我遇到了同样的问题,所以我想这不是我做的事情。

  • 问题内容: 在我的rails应用程序中,我在向api的ajax发布中收到“警告:无法验证CSRF令牌的真实性”。 app / views / layouts / application.html.haml : ajax发布 : 问题答案: 假设您已使用Rails 标记设置了CSRF令牌,则请求的令牌将在meta标记中可用: 由于使用的是jQuery,因此可以通过为密钥调用以下值来将令牌传递给AJA

  • 问题内容: Rails似乎忽略了AJAX请求的真实性令牌。例如,我故意更改了AJAX调用以使用无效的令牌对其进行测试,并且请求似乎正常进行。 该应用程序具有使用会话cookie存储的默认配置,并在ApplicationController中具有了protect_from_forgery调用。 有什么想法我可能会错过的吗? 问题答案: 编辑>>我也在博客文章中发布了此答案:http: //zadas

  • 我的rails应用程序订阅了一个外部系统POST通知(名为Orion context broker)。我管理发送json数据和处理响应(Ruby->Orion)。

  • 我正在尝试使用 NodeJS 构建 RESTful API,但在 api 调用期间无法理解使用令牌对用户进行身份验证的正确方法。在阅读了一些博客和文章后,我想出了这些方法: Access Token(AT)是包含唯一userId作为JWT有效负载的JWT令牌。1天后到期。 刷新令牌(RT)是使用uuid npm包的随机uuid。与用户文档一起存储在数据库中。 过程: 当用户登录/注册服务器发布新A

  • 问题内容: 我从API端点获取了承载令牌,并设置了以下内容: 接下来,我想使用CURL访问安全端点,但是不确定如何或在何处设置Bearer令牌。 我已经尝试过了,但是没有用: 编辑: 根据文档,我应该这样使用承载令牌:https : //apigility.org/documentation/auth/authentication- oauth2 问题答案: 更换: 与: 使其成为有效且有效的Au