[英]Codeigniter CSRF Jquery Issue
我很困惑为什么codeigniter不会让我使用这个:
$(function() {
var csrf = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>"),
csrfToken = "<?php echo $this->security->get_csrf_token_name(); ?>";
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, {csrfToken: csrf}, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});
当我像这样执行完全相同的代码时,它可以正常工作:
$(function() {
var csrf = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>");
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, {<?php echo $this->security->get_csrf_token_name(); ?>: csrf}, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});
为什么我不能设置安全性-> get_csrf_token_name(); ?>变成变量?
因为您不能将变量用作对象键。 您需要这样插入:
$(function() {
var postData = {};
var csrfToken = "<?php echo $this->security->get_csrf_token_name(); ?>";
postData[csrfToken] = $.cookie("<?php echo $this->config->item('csrf_cookie_name'); ?>"),
$('.notificationBoxClose').click(function() {
var url = $(this).attr('href');
$.post(url, postData, function() {
$('#notification').fadeOut('slow', function() {$this.remove()});
});
return false;
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.