繁体   English   中英

Rails-警告:无法验证CSRF令牌的真实性

[英]Rails - WARNING: Can't verify CSRF token authenticity

我正在使用一些名为jpegcam的javascript(使用回形针,按照这些说明进行操作 ),并且在不同情况下会创建错误的CSRF令牌。 这是应用程序中唯一存在此问题的地方。 错误的令牌中间有'+'字符。

JS中的此部分是问题 webcam.set_api_url('<%= upload_users_path %>' + '?' + csrf_param + "=" + encodeURI(encodeURI(csrf_token)));

警告信息:

Started POST "/users/upload?authenticity_token=N0x/rDOgyC6AutbXzx8sZXLwDnB9zQ+NwWefXTpiSfE=" for 127.0.0.1 at 2013- 06-04 01:06:34 -0400
...
Parameters: {"authenticity_token"=>"N0x/rDOgyC6AutbXzx8sZXLwDnB9zQ NwWefXTpiSfE="}
 WARNING: Can't verify CSRF token authenticity
...
Completed 401 Unauthorized in 15ms

JS(在页面视图中)如下所示:

<script type="text/javascript">
function onload_complete(msg) {
    // fetch the CSRF meta tag data
    var csrf_param = $('meta[name=csrf-param]').attr('content');
    var csrf_token = $('meta[name=csrf-token]').attr('content');

    // reset the api URL appending the auth token parameter
    webcam.set_api_url('<%= upload_users_path %>' + '?' + csrf_param + "=" + encodeURI(encodeURI(csrf_token)));
}
...
</script>

尝试将请求标头上的csrf令牌作为X-CSRF-Token传递。 request.setRequestHeader("X-CSRF-Token", csrf_token)
上次我在CSRF遇到问题时,这种方法可以解决问题

将此代码添加到您的/application.js中

$(function() {
  $.ajaxSetup({
    beforeSend: function ( xhr ) {
      xhr.setRequestHeader("Accept", "text/javascript") 
    }
  }
}

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM