Как исправить шаблон ejs? Не интерпретирует HTML-теги как HTML - PullRequest
0 голосов
/ 11 мая 2019

Я следую учебному пособию по node.js и mongodb с шаблонами ejs. У меня есть этот шаблон ejs, который использует функцию javascript для вывода списка. Этот список включает в себя HTML-теги. Но он не интерпретирует эти HTML-теги и просто показывает их как текст.

Ссылка на учебник: https://closebrace.com/tutorials/2017-03-02/the-dead-simple-step-by-step-guide-for-front-end-developers-to-getting-up-and-running-with-nodejs-express-and-mongodb

Вот строка из кода, вызывающая проблему

<h1>User List</h1>
    <ul>
      <%
        var list = '';
        for (i = 0; i < userlist.length; i++) {
          list += '<li><a href="mailto:' + userlist[i].email + '"></a>' + userlist[i].username + '</a></li>';
        }
      %>
      <%= list %>
    </ul>

Я ценю вашу поддержку!

1 Ответ

0 голосов
/ 11 мая 2019

Я думаю, что это ошибка в руководстве. Когда вы добавляете переменную list, вы помещаете элементы HTML в строку.

Ejs автоматически избежит этого, когда вы выполните <%= list %>.

Чтобы получить строку, которая будет интерпретироваться как HTML, необходимо изменить ее на <%- list %>.

Сказав это, вы должны быть очень осторожны при использовании этого, поскольку это потенциально оставляет сайт открытым для людей, внедряющих скрипты на вашу страницу (XSS).

Вам бы лучше сделать что-то вроде этого:

<ul>
  <% userlist.forEach(function(user){ %>
    <li>
      <a href="mailto:<%= user.email %>"><%= user.username %></a>
    </li>
  <% }); %>
</ul>
...