Dark_Knight
@Dark_Knight
Game Dev

Как раскодировать строку которая приходит с сервера?

Здравствуйте, подскажите пожалуйста.
На сервере, как и на клиенте стоит проверка, что если пользователь вводит html теги, то их нужно кодировать, функция выглядит таким образом:
var encodeHtmlEntities = function (str) {
    return String(str)
        .replace(/&/g, '&')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&apos;')
        .replace(/\\/g, '&bsol;')
        .replace(/\//g, '&sol;');
};

Проблема в том, что сервер так же кодирует сообщения перед тем, как их отправить, то есть мне приходит уже вот такая строка: &lt;script&gt;alert(1)&lt;&sol;script&gt;
И если я ее вставлю в ui то она в таком виде и будет. А мне нужно сделать так, чтоб она в ui выглядела вот так
<script>alert(1)</script>
Я так понимаю, что мне ее нужно сначала раскодировать, а потом снова закодировать и вставить в ui?
Вопрос: должна выглядеть функция раскодирования?
Спасибо за помощь и ваше время.
  • Вопрос задан
  • 2599 просмотров
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
function encodeHtmlEntities(str) {
  return String(str)
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&apos;')
    .replace(/\\/g, '&bsol;')
    .replace(/\//g, '&sol;');
};

function decodeHtmlEntities(str) {
  return String(str)
    .replace(/&amp;/g, '&')
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>')
    .replace(/&quot;/g, '"')
    .replace(/&apos;/g, '\'')
    .replace(/&bsol;/g, '\\')
    .replace(/&sol;/g, '/');
};

var str = '<script src="test.com">\\Lorem Ipsu\'m</script>';
str = encodeHtmlEntities(str);
console.log(str); // &lt;script src=&quot;test.com&quot;&gt;&bsol;Lorem Ipsu&apos;m&lt;&sol;script&gt;
str = decodeHtmlEntities(str);
console.log(str); //  <script src="test.com">\Lorem Ipsu'm</script>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Функция раскодирования должна выглядеть как функция кодирования. Только наоборот.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы