Как будет работать микро-интерфейс при использовании Apache Wicket? - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу создать архитектуру микро-интерфейса, используя 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?

РЕДАКТИРОВАТЬ: В этом коде я пытаюсь отправить учетные данные автоматически, чтобы запрос аутентификации не отображался .

1 Ответ

0 голосов
/ 02 апреля 2020

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

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

...