ошибка «это содержимое нельзя просмотреть в рамке» при первой загрузке страницы - PullRequest
0 голосов
/ 10 мая 2018

Я разработал форму поиска, которая размещена на локальном сервере (iis, net core web site) в моей компании. Веб-сайт представляет собой Wordpress, размещенный на другом сервере (apache, wamp), также в компании. Оба имеют разные публичные IP-адреса, но оба размещены в поддоменах одного домена.

скажем, wordpress.company.com и search.company.com, и у меня есть контроль над обоими.

При первом тестировании с использованием плагина iframe все работает нормально, однако теперь я понял, что эта ошибка отображается в Edge. Одинаковое поведение отображается во всех браузерах, но похожие сообщения не отображаются.

Это содержимое не может быть отображено в рамке

Здесь должен быть какой-то контент, но издатель не позволяют отображаться в рамке. Это поможет защитить безопасность любой информации, которую вы можете ввести на этом сайте.

Попробуйте это

Открыть это в новом окне (которое является ссылкой на URL содержимого iframes)

Странно то, что мне просто нужно нажать F5, и все загружается правильно.

Ошибка в консоли Chrome:

Отказался отображать 'http://subdomain.mysite.com/' в кадре, потому что для параметра «X-Frame-Options» установлено значение «sameorigin».

Как мне обойти это поведение?

1 Ответ

0 голосов
/ 11 мая 2018

Проблема похожа на описанную здесь , но из-за .net Core. И решение тоже похоже.

Вы также можете использовать рекомендации, сделанные @ user770 в комментариях к вопросу. Однако это не решает блок iframe. И ни один из этих ответов не объясняет, почему обновление страницы решило проблему. Однако это не очень хороший опыт для пользователей.

Таким образом, решение простое и может быть реализовано с помощью кода, что делает его более безопасным, если кто-либо пытается перезаписать установку X-Frame-Otions на вашем сервере. Любая множественная установка будет выведена в 'deny'.

В файле startup.cs вашего проекта вы должны добавить это, чтобы ядро ​​.net не добавляло параметр sameorigin автоматически.

 public void ConfigureServices(IServiceCollection services)
 {
        //YOU CAN HAVE SOME CODE HERE

        services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);
 }

Однако это может привести к риску на вашем сайте, и этот сценарий предназначен для применения, когда у вас есть контроль над обоими сайтами и обоими доменами.

Чтобы обезопасить сайт, вы должны установить параметр X-frame-options, чтобы разрешить домен, который вы хотите. Снова в файле startup.cs выполните следующие действия.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //YOU MAY HAVE SOME CODE HERE

        app.Use(async (context, next) =>
        {
            context.Response.Headers.Add("X-Frame-Options", "ALLOW-FROM http://*.MYCONTROLLEDDOMAIN.COM https://*.MYCONTROLLEDDOMAIN.COM");
            await next();
        });
    }

Таким образом, вы позволите вашему домену запрашивать этот сайт в пределах iframe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...