gpt4 book ai didi

javascript - 如何在不使用 Rails 助手的情况下实现 'safe' 周期执行器?

转载 作者:行者123 更新时间:2023-12-02 20:38:57 25 4
gpt4 key购买 nike

我对 Ruby on Rails 非常陌生,并且从来不热衷于编写 JavaScript,因此内置的帮助程序就像一小片天堂。然而,我最近了解到,使用辅助方法会创建“引人注目的 javascript”,因此我正在做一些重构,以将所有这些困惑的代码从我的视野中剔除。我还使用 Prototype API 来弄清楚所有这些函数的作用。

现在,我有:

<%= periodically_call_remote(:url => {:action => "tablerefresh", :id => 1 }, :frequency => '5', :complete => "load('26', 'table1', request.responseText)")%>

产生:

<script type="text/javascript"> 
//<![CDATA[
new PeriodicalExecuter(function() {new Ajax.Request('/qrpsdrail/grids/tablerefresh/1', {asynchronous:true, evalScripts:true, onComplete:function(request){load('26', 'table1', request.responseText)}, parameters:'authenticity_token=' + encodeURIComponent('dfG7wWyVYEpelfdZvBWk7MlhzZoK7VvtT/HDi3w7gPM=')})}, 5)
//]]>
</script>

我担心的是“encodeURIComponent”和“authenticity_token”的存在是由Rails 生成的。我假设这些用于确保请求的有效性。 (确保请求来自当前事件 session ?)

如果是这种情况,我如何在 application.js 中“安全”地实现它?看来内置方法虽然很唐突,但确实增加了一些有益的安全性。

提前感谢所有回答的人。

最佳答案

Rails 生成身份验证 token 以防止 XSS 攻击。请参阅:ActionController::RequestForgeryProtection您可以将其关闭,但是,您是对的,使用它更安全。

想到的最简单的解决方法是将身份验证 token 放在页面顶部的某个位置:

<% javascript_tag do %>
<%= "var AUTH_TOKEN=encodeURIComponent(#{form_authenticity_token.inspect});" %>
<% end %>

这很唐突,但至少你可以在 application.js 文件中自由使用 AUTH_TOKEN 变量。

关于javascript - 如何在不使用 Rails 助手的情况下实现 'safe' 周期执行器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795280/

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