Как отправить csrf token на сервер без формы ? [Решено]
Как отправить csrf token на сервер без формы ? [Решено]
Подскажите пожалуйста как отправить csrf token на сервер без формы, например в ситуации, когда нужно просто на жать на кнопку и отправить данные на сервер, куда и как лучше всего добавить csrf token на странице ?
Последний раз редактировалось nepster 2014.07.24, 13:21, всего редактировалось 1 раз.
Re: Как отправить csrf token на сервер без формы ?
Там все ссылки ведут на 404 страницу.
Я хотел уточнить несколько моментов:
1) Я добавил следующие мета теги:
2) К примеру у меня есть виджет, который должен двигать стрелочку туда-сюда при нажатии на нее. JS код реализовал вот так:
Вариант конечно рабочий и при этом вопрос такой, хороший ли это вариант ? Тоесть возможно есть ситуации, где можно было что-то сделать лучше ?
Я хотел уточнить несколько моментов:
1) Я добавил следующие мета теги:
Код: Выделить всё
$this->registerMetaTag(['name' => 'csrf-param', 'content' => Yii::$app->getRequest()->csrfParam], 'csrf-token');
$this->registerMetaTag(['name' => 'csrf-token', 'content' => Yii::$app->getRequest()->getCsrfToken()], 'csrf-param');
Код: Выделить всё
(function ($) {
var param = $('meta[name=csrf-param]').attr("content");
var token = $('meta[name=csrf-token]').attr("content");
$(document).on('click', '.side-activations.active', function(){
var el = this;
var elHtml = $(this).parent().html();
var data = {};
data[param] = token;
$.ajax({
url: $(this).data("url"),
type: 'POST',
data: data,
success: function(response, textStatus, jqXHR) {
if(response == 'L' || response == 'R'){
$(el).remove();
var side = response;
$('.lide-'+side).html(elHtml);
}
}
});
return false;
});
})(jQuery);
Вариант конечно рабочий и при этом вопрос такой, хороший ли это вариант ? Тоесть возможно есть ситуации, где можно было что-то сделать лучше ?
Re: Как отправить csrf token на сервер без формы ?
А почему вы сразу в виджете не подставляете в ajax, создаёте кучу лишних переменных ?
Код: Выделить всё
// ...
data: {'<?= Yii::$app->request->csrfParam ?>' : '<?= Yii::$app->request->getCsrfToken()?>' },
//...
Re: Как отправить csrf token на сервер без формы ?
Вот есть же:
https://github.com/yiisoft/yii2/blob/ma ... in.php#L20
Для получения в JS тоже так делаю, вроде проблем не было пока)
Код: Выделить всё
<?= Html::csrfMetaTags() ?>
Для получения в JS тоже так делаю, вроде проблем не было пока)
Код: Выделить всё
var param = $('meta[name=csrf-param]').attr("content");
var token = $('meta[name=csrf-token]').attr("content");
Re: Как отправить csrf token на сервер без формы ?
большое спасибо. Про Html::csrfMetaTags() не знал.
-
- Сообщения: 271
- Зарегистрирован: 2012.11.30, 07:33
Re: Как отправить csrf token на сервер без формы ?
Это в последних обновлениях появилось, после того как убрали рендер их по-умолчаниюnepster писал(а):большое спасибо. Про Html::csrfMetaTags() не знал.
-
- Сообщения: 1
- Зарегистрирован: 2017.11.12, 01:28
Re: Как отправить csrf token на сервер без формы ? [Решено]
пацаны, какие мета-теги???
Код: Выделить всё
var param = yii.getCsrfParam();
var token = yii.getCsrfToken();
Re: Как отправить csrf token на сервер без формы ? [Решено]
yii.js не всегда нужен на фронтендеpervozdanniy писал(а): ↑2017.11.12, 01:31 пацаны, какие мета-теги???Код: Выделить всё
var param = yii.getCsrfParam(); var token = yii.getCsrfToken();