나는 레일즈에 새로운 사람들입니다. 나는레일 4.1.8 : 인증 토큰이 유효하지 않습니다.
<%= csrf_meta_tags %>
<%= javascript_tag "var AUTH_TOKEN = '#{form_authenticity_token}';" if protect_against_forgery? %>
을 내 application.html.erb
에 있습니다. data
내 아약스 방법,
data: data + "&authenticity_token="+AUTH_TOKEN,
을 나는 아약스를 통해 양식을 게시 할 필요가 있고 내가있다. 두 개의 토큰, 즉 게시 메서드 헤더 인증 토큰 X-CSRF-Token
과 내가 보낸 사람인 Auth_TOKEN
이 동일한 지 확인했습니다. 나는 여전히 Can't verify CSRF token authenticity
오류가 발생합니다. 나는 보안을 건너 뛰고 싶지 않다. 나는 이것을 처리 할 적절한 방법이 필요하다. 어떤 생각? 미리 감사드립니다.
양식
<h3 id="emailModalLabel">Tell Your Friends About Us</h3>
<form class="form-horizontal col-sm-12 validate" name="emailForm" id="emailForm">
<div class="form-group"><label>Your Name *</label><label class="error" for="your_name" generated="true"></label><input id="your_name" name="your_name" class="form-control required" placeholder="Your name" data-placement="top" data-trigger="manual" data-content="Must be at least 3 characters long, and must only contain letters." type="text"></div>
<div class="form-group"><label>Your E-Mail *</label><input id="your_email" name="your_email" class="form-control required email" placeholder="[email protected] (so that your friend can reply to you)" data-placement="top" data-trigger="manual" data-content="Must be a valid e-mail address ([email protected])" type="email"></div>
<div class="form-group"><label>Friend's Name *</label><input id="friend_name" name="friend_name" class="form-control required" placeholder="Your friend's name" data-placement="top" data-trigger="manual" data-content="Must be at least 3 characters long, and must only contain letters." type="text"></div>
<div class="form-group"><label>Friend's E-Mail *</label><input id="friend_email" name="friend_email" class="form-control required email" placeholder="[email protected] (so that you can email them)" data-placement="top" data-trigger="manual" data-content="Must be a valid e-mail address ([email protected])" type="email"></div>
<div class="form-group"><label>Message</label><textarea id="message" name="message" class="form-control" rows="5" placeholder="Your message here.." data-placement="top" data-trigger="manual"></textarea></div>
<div class="form-group"><p class="help-block pull-left text-danger hide" id="form-error"> The form is not valid. </p></div>
<span class="pull-right"><button class="btn col-md-5 col-sm-5 col-xs-5" data-dismiss="modal" aria-hidden="true">Cancel</button><button id="emailSubmit" type="submit" class="btn btn-default pull-right col-md-5 col-sm-5 col-xs-5">Send It!</button></span>
</form>
아약스 POST 아약스 요청에 data
이 serialized
입니다
$("#emailForm").validate({
rules:{
your_name: {required: true},
your_email: {required: true, email: true},
friend_email: {required: true, email: true},
friend_name: {required: true}
},
submitHandler: function(form) {
$("#emailSubmit").prop("disabled", true);
var data = $("form#emailForm").serialize();
$.ajax({
type: "POST",
url: "/send",//process to mail
data: data + "&authenticity_token="+AUTH_TOKEN,
success: function(msg){
if(msg['success']){
$(".successContainer").toggleClass("hide", 1000, "easeOutSine");
setTimeout("$('#emailModal').modal('hide')", 5000);
}else{
$(".errorContainer").toggleClass("hide", 1000, "easeOutSine");
}
},
error: function(){
$(".errorContainer").toggleClass("hide", 1000, "easeOutSine");
}
});
}
});
은 그래서 문자열이며, 그 문자열에 토큰을 추가하고있다.
양식을 작성하는 방법을 제공 할 수 있습니까? – kurenn
Ajax가 POST 또는 GET을 통해 전송하고 있습니까? 'data : data + "& authenticity_token ="+ AUTH_TOKEN' 원래'data'는 실제로 문자열이거나 객체입니까? –
내 질문에 편집하여 아약스 요청을 추가했습니다. – user2067888