Несколько заголовков "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)
- затем вы можете переопределить или удалить дополнительный заголовок