Несколько заголовков X-Frame-Options с конфликтующими значениями

Обновление: это работает для IE, но Chrome по-прежнему выдает эту ошибку. Я пытаюсь i-frame i-frame сайта, которым я владею, другим сайтом, которым я владею. Вот сообщение об ошибке, которое я получаю в консоли JS в Chrome:

Multiple 'X-Frame-Options' headers with conflicting values ('AllowAll, SAMEORIGIN, AllowAll') encountered when loading 'http://subdomain.mysite.com:8080/Dir/'. Falling back to 'DENY'.
Refused to display 'http://subdomain.mysite.com:8080/Dir/' in a frame because it set 'X-Frame-Options' to 'AllowAll, SAMEORIGIN, AllowAll'.

Я сделал поиск SAMEORIGIN везде, я не устанавливаю это НИГДЕ.

Основной сайт — www.mysite.com, а второй — subdomain.mysite.com. Очевидно, что политика одного и того же происхождения удерживает меня от этого. Поэтому я установил для заголовка X-Frame-Options на моем subdomain.mysite.com значение «AllowAll». В методе start-request я добавил это:

HttpContext.Current.Response.Headers.Remove("X-Frame-Options");
HttpContext.Current.Response.AddHeader("X-Frame-Options", "AllowAll");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

на уровне страницы я добавил это:

<meta name="x-frame-options" content="allowall" />

В Javascript я добавил это:

<script type="text/javascript">
    document.domain = "mysite.com";
</script>

У меня заканчиваются вещи, чтобы попробовать... Заранее спасибо за вашу помощь.


person Arachnid    schedule 04.03.2014    source источник


Ответы (4)


В моем случае это был токен защиты от подделки, который добавлял заголовок. Добавление этого в Application_Start остановило его от добавления:

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

Затем я добавил параметры X-Frame-Options в web.config. так как мне нужно было, чтобы весь сайт находился в IFrame.

person Mike the Tike    schedule 05.06.2014
comment
Ага, я тоже...+1 за экономию времени - person JasonInVegas; 06.07.2017
comment
@MiketheTike У меня есть похожий вопрос. Мне интересно, можете ли вы взглянуть. - person john; 19.11.2018

Оказывается, MVC4 добавляет заголовок сам по себе (незапрошенный). Единственный способ обойти это — явно удалить заголовок.

Response.Headers.Remove("X-Frame-Options");

Может быть способ убедить MVC4 не делать этого, но он не работал в моих оценках запросов Google.

person Arachnid    schedule 05.03.2014
comment
У меня есть аналогичный вопрос. Мне интересно, можете ли вы взглянуть. - person john; 19.11.2018

Некоторые дополнительные подробности к ответу Майка Тика, это добавлено в метод application_start в global.asax.cs, где вам понадобится директива использования system.web.helpers

person Phil Kermeen    schedule 28.08.2014

IIS может добавить второй заголовок после вашего (вы можете увидеть это, нажав F12 для инструментов разработчика в Chrome, попытаться загрузить страницу, затем нажать «Сеть» и щелкнуть правой кнопкой мыши страницу с ошибкой, чтобы скопировать заголовки ответов, чтобы посмотреть ).

Чтобы запретить IIS добавлять заголовок:

  • Запустите диспетчер IIS
  • Выберите свой веб-сайт
  • Дважды щелкните заголовки ответа HTTP для приложения (или в старых IIS щелкните правой кнопкой мыши веб-сайт, выберите «Свойства», затем «Заголовки HTTP»).
  • Затем вы можете переопределить или удалить дополнительный заголовок
person cometfish    schedule 05.03.2014