2
我有一个奇怪的问题。我最近发现通过AJAX发布的文本字段出错。经过调查,我发现会话重置为POST POST AJAX请求。我认为一定是csrf问题。我检查凭证并正在布局文件正确地传递这样的:Rails会话重置
<%= 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标记与已经在散列中的标记不同。我无法理解这一切。任何线索可能是所有这些的原因?
你使用页面缓存吗?如果是这样,你可能用一个CSRF令牌缓存表单,然后再把它提供给另一个用户。 – 2011-04-24 08:36:04