У меня есть фрагмент html, который я хочу отобразить в другом окне, когда кто-то нажимает на ссылку (встроенную в некоторый текст, исходящий из серверной части) в браузере. Таким образом, в Java бэкэнде, я base64 кодирую его и помещаю в текст, который отправляется на внешний интерфейс:
String encoded = DatatypeConverter.printBase64Binary(resourceRecord.getHtml().getBytes());
a.attr("href", "data:text/html;base64," + encoded)
.attr("target", "_blank")
.attr("rel", "nofollow");
И когда текст отображается, я вижу подчеркнутую синим цветом ссылку в веб-инспекторе это выглядит так:
Пока все хорошо. К сожалению, когда я нажимаю на ссылку, она просто открывает новую пустую вкладку. И в Firefox, и в Chrome, если я нажимаю на адресную строку в этой новой вкладке, она отображает URL-адрес данных в адресной строке, и если я нажимаю клавишу возврата, отображается ожидаемое html.
Как я могу сделать так, чтобы html действительно отображался без шага "клик в адресной строке и возврат"? Или это вообще возможно?
Обновление Добавлена политика безопасности контента с navigate-to 'self' https: http: data:
, и это не помогло. Я также попробовал не base64-кодирование, потому что я прочитал один сайт, который сказал, что Chrome ограничивал URL-адреса данных верхнего уровня только для кодировки base64, но это не помогло, а другие источники говорили об ограничении его для всех URL-адреса данных. Каждое решение, которое я видел, включало в себя открытие окна и выполнение записи в него, а не использование тега <a>
, поэтому я прихожу к выводу, что это просто невозможно.