Ошибка смешанного содержимого с iframe сайта в подпапке основного сайта за балансировщиком нагрузки F5 - PullRequest
0 голосов
/ 25 октября 2019

Моя конфигурация:

  • Сайт IIS без сертификата (похоже на v6.2 с Window Server 2012R2)
  • Доступ SSL через балансировщик нагрузки F5
  • Второй сайт (mediawiki, последняя стабильная версия) как приложение в подпапке того же сайта

Я пытаюсь включить второй сайт в качестве фрейма в подпапку сайта, на котором я работаюIIS. Доступ к сайтам осуществляется за балансировщиком нагрузки. Фактический сайт использует http, так как у него нет сертификата. Балансировщик нагрузки имеет сертификат Digicert, и я предполагаю, что действует как обратный прокси.

Итак, я могу получить доступ к каждому сайту через https. https://site.xxx, и https://site.xxx/mediawiki. Все ссылки, кажется, показывают https. Что касается подпапки, я посмотрел сетевой трафик на главной странице и не вижу ни одного URL-адреса, отличного от https.

Итак, я вставил второй сайт как iframe на основной сайт, ибраузер не загружает его, жалуясь, что он не защищен. Глядя на вывод консоли FF, он говорит:

Blocked loading mixed active content "http://site.xxx/mediawiki"

В iframe я указал безопасное полное доменное имя подпапки. Я также попробовал относительный путь, но получил точно такой же результат.

<iframe src="https://site.xxx/mediawiki"></iframe>

В MediaWiki я указал

$wgServer = "//site.com"";

Я также пытался в той же настройке FQDN полногоОсновной сайт с https.

Есть мысли о том, почему он переключен на http?

1 Ответ

0 голосов
/ 26 октября 2019

Решением этой проблемы является добавление последней косой черты после URL, чтобы он не перенаправлял (не знаю технических причин для этого, но я обнаружил, что здесь )

<iframe src="https://site.xxx/mediawiki/"></iframe>

Кроме того, для Media Wiki некоторые другие изменения, которые следует внести, должны правильно разрешить iFrames

Mediawiki

$wgApiFrameOptions = 'SAMEORIGIN';
$wgEditPageFrameOptions = 'SAMEORIGIN';

MVC 5

Я также использовал MVC 5 для главной страницы, и вы хотите разрешить iFrames, поэтому вставьте это в Global.asax.cs.

    protected void Application_Start()
    {
      AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
     }

Кроме того, потому чтоЯ аутентифицировал основной сайт с помощью своего пользовательского кода AD, и мне нужно было убедиться, что он не заставил его перейти на подстраницу, что не может сделать это (это отдельный веб-сайт PHP, а не код Microsoft).

  <location path="." inheritInChildApplications="false">
    <system.web>
        ...
    </system.web>
   </location>
...