Menu
CoddyTech

Текст внутри HTML

Часть раздела Основы Express путешествия по Node.js на Coddy. Урок 9 из 23.

Посетитель может ввести символы, которые HTML воспринимает как разметку. Если заголовок содержит <b>, его прямая вставка на страницу создаёт тег. Экранирование превращает эти символы в текст, который отображает браузер.

escapeHtml('<b>Lunch</b>');
// &lt;b&gt;Lunch&lt;/b&gt;

Вспомогательная функция преобразует & в &amp;, который браузер отображает как амперсанд. Двойные кавычки превращаются в &quot;; апострофы остаются без изменений. Экранируйте каждое вставляемое текстовое значение независимо от того, кто его написал, прежде чем окружать его собственным HTML. При экранировании всей страницы теги заголовков тоже отобразятся как текст. Вам не нужно писать вспомогательную функцию; важно решить, где её использовать.

В URL записывайте пробел как %20, амперсанд как %26, а угловые скобки как %3C и %3E. Эти кодировки отделяют текст заголовка от синтаксиса запроса.

challenge icon

Задание

Легко

Отредактируй exercise.js. Используй предоставленный вспомогательный инструмент для обработки заголовка, прежде чем помещать его в собственные теги заголовка. Верни готовый заголовок в html.

Нажми «Играть»: GET /result?title=Fish%20%26%20Chips возвращает {"html":"<h1>Fish &amp; Chips</h1>"}. Попробуй /result?title=%3Cb%3ELunch%3C%2Fb%3E: вставленный заголовок должен быть текстом, а твой заголовок должен остаться разметкой.

Попробуйте сами

import { escapeHtml } from './html.js';
export function exercise({ title }) {
    return { html: `<h1>${title}</h1>` };
}

Все уроки раздела Основы Express

Потренируйтесь самостоятельно: Песочница Express