.Net Core Использовать ссылку выхода из системы вместо кнопки предотвращения междоменного запроса GET - PullRequest
0 голосов
/ 01 июля 2018

Я знаю, что использование кнопки вместо ссылки привязки в _LoginPartial.cshtml предназначено для предотвращения междоменных запросов GET, но мне действительно нужно использовать ссылку привязки, чтобы иметь унифицированные ссылки панели навигации. Мой вопрос: если я использую тег привязки и использую код javascript для вызова метода отправки формы, будет ли это безопасно и предотвратит междоменный запрос GET? Я имею в виду замену этого кода:

<button type="submit">Logout</button>

с этим:

<a href="javascript:document.getElementById('logoutForm').submit()"></a>

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Нет необходимости переходить от кнопки к ссылке, чтобы добиться единообразных ссылок навигационной панели. Если вы используете загрузчик, вы можете легко сделать кнопку похожей на ссылку, как показано на рисунке, если вы не используете загрузчик, все равно можно оформить кнопку, чтобы она выглядела как ссылка .

<button type="submit" class="btn btn-link">Logout</button>
0 голосов
/ 01 июля 2018

Смысл использования формы в том, что форма автоматически включает в себя токен CSRF . Этот токен защищает вас от межсайтовых запросов, поскольку он генерируется только как часть реальной формы и поэтому недоступен извне.

Пока этот токен включен и действителен, вы должны быть защищены от CSRF. Так что да, отправка формы через JavaScript будет в порядке здесь.

Попробуйте использовать правильное click событие для вашей ссылки, вместо javascript: links:

<a id="logout-link" href="#">Logout</a>
document.getElementById('logout-link').addEventListener('click', function (evt) {
    evt.preventDefault();
    document.getElementById('logoutForm').submit();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...