Как Spring-Stomp обрабатывает заголовки с ":" - PullRequest
0 голосов
/ 20 марта 2020

Я помещаю дату и время (например: 2020-03-20 13:56:57) в заголовки Spring STOMP, например:

map.put("messageTime","2020-03-20 13:56:57");
simpMessagingTemplate.convertAndSend("","",map)

Клиент STOMP выглядит так:

stomp.subscribe("",(res)=>{
   let messageTime = res.headers.messageTime;
})

Результат клиента отображается следующим образом:

messageTime:2020-03-20 13\c56\c57

: преобразуется в \c. Почему?

1 Ответ

0 голосов
/ 20 марта 2020

Это происходит из-за спецификации STOMP , которая гласит (выделение мое):

C экранированные строковые литералы используются для кодирования любого возврата каретки, перевода строки или двоеточие , которые находятся в кодированных заголовках UTF-8. При декодировании заголовков кадра ДОЛЖНЫ применяться следующие преобразования:

  • \r (октет 92 и 114) переводится в возврат каретки (октет 13)
  • \n (октет 92 и 110) переводится в перевод строки (октет 10)
  • \c (октет 92 и 99) переводится в : (октет 58)
  • \\ (октет 92 и 92) переводится как \ (октет 92)
...