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

Update: это работает для IE, но Chrome все еще бросает эту ошибку. Я пытаюсь создать сайт, которым я владею, на другом сайте, которым я владею. Вот сообщение об ошибке, которое я получаю в консоли 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". В методе begin-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>

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

4 ответов


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

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

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


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

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

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


некоторые дополнительные детали для ответа Майка Tike, это добавляется к методу application_start в global.асакс.cs, где вам понадобится система директив using.сеть.помощники!--1-->


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

чтобы остановить IIS от добавления заголовка:

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