Как будет работать микрофронтенд с использованием Apache Wicket?

Я хочу реализовать архитектуру микрофронтенда с помощью Apache Wicket, но не могу заставить ее работать.

add(new WebMarkupContainer("testFrame") {

        @Override
        protected void onComponentTag(ComponentTag tag) {
            checkComponentTag(tag, "iframe");

            super.onComponentTag(tag);
            //Won't work like this if you want to send credentials.
            //tag.put("src", "http://localhost:8089/httpBasicAuthenticated/url/page/");

        }

        @Override
        public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
            Response response = getRequestCycle().getResponse();

            final CredentialsProvider provider = new BasicCredentialsProvider();

            String username = "user";
            String password = "password";

            final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);

            provider.setCredentials(AuthScope.ANY, credentials);

            final HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
            HttpResponse httpResponse = null;

            String body = "";
            try {
                httpResponse = client.execute(new 
                   HttpGet("http://localhost:8089/httpBasicAuthenticated/url/page/"));
                body = IOUtils.toString(httpResponse.getEntity().getContent(), "UTF-8");
            } catch (final IOException e) {

                e.printStackTrace();
            }
            response.write(body);

        }

    });

Результат проверки элемента

Я пытаюсь использовать iframe, но он не отображает страницу внутри iframe. Здесь что-то не так? Как мне отправить учетные данные по запросу страницы через iframe?

EDIT: В этом коде я пытаюсь автоматически отправить учетные данные, чтобы запрос аутентификации не отображался.


person MC Mad Moefat    schedule 01.04.2020    source источник


Ответы (1)


При базовой аутентификации вам нужно отобразить <iframe src="..."></iframe>, и браузер покажет вам диалоговое окно для ввода учетных данных.

Если вы создаете тело на сервере (то есть в коде Wicket), вам нужен не iframe, а div.

person martin-g    schedule 02.04.2020
comment
Я хотел отправить учетные данные автоматически, не требуя запроса аутентификации. Я только что отредактировал свое описание. Я мог бы сделать это с помощью Include, но это означает, что мне нужно принести веб-ресурсы страницы, например. css, js и добавьте его в раздел заголовка, но что, если URL-адреса <link>s и <script> имеют относительные URL-адреса. Что я думаю, это громоздко, любое предложение? Я рад услышать больше. - person MC Mad Moefat; 02.04.2020