Handlebars JS обрабатывает HTML как String [duplicate]

Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            myCallback(response);
        }
    });

    return result;
}

function myCallback(response) {
    // Does something.
}
6
задан DavidB 13 January 2015 в 17:16
поделиться

1 ответ

По умолчанию все двойные сложения {{var}}, внедренные в Handlebars, будут экранированы HTML. Это делается по соображениям безопасности, чтобы избежать уязвимостей DOM XSS . Поскольку ваша переменная может содержать любые данные, включая пользовательские данные или любые недостоверные данные.

В некоторых случаях вам необходимо внедрить свои данные как есть, не ускользая. Там, где используется триплекс {{{var}}}. Но каждый раз, когда вы это делаете, вам нужно подумать о том, что может быть в ваших данных, и можете ли вы ему доверять?

Подробнее о HTML Escaping на рулевых колонках сайт.

18
ответ дан raidendev 3 September 2018 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: