我有一个奇怪的问题。我最近检测到通过 AJAX 发布的文本字段出错。经过调查,我发现会话被重置为这个 POST AJAX 请求。我认为一定是csrf问题。我检查了令牌,它像在布局文件中一样被正确传递:
<%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? -%>
我的 AJAX 请求如下所示:
<script type="tex/javascript">
$(document).ready(function(){
$("#post_msg").click(function(){
var update = $("#msg").val();
var authenticity_token = AUTH_TOKEN;
$.ajax({
type: "POST",
url: "/messages.js",
data: "msg[text]="+escape(msg) + "&_csrf_token="+encodeURIComponent(authenticity_token),
dataType: "json",
success: function(msg){
// Code to append the msg to DOM
)
但是在调试器中,我注意到 csrf 令牌与哈希中已经存在的令牌不同。我无法理解这一切。任何线索可能是这一切的原因?