Подтвердить что ты не робот

MVC 5 предотвращает доступ к контенту через iframe

С момента обновления с MVC4 до MVC5 я заметил дополнительный серверный заголовок, добавленный на мои веб-страницы:

X-Frame-Options: SAMEORIGIN

Я понимаю преимущества безопасности добавления этого тега, но одна из страниц предназначена для включения внутри iframe из других проектов (в других доменах), этот дополнительный заголовок предотвращает это.

Я проверил, что сервер хостинга IIS7 не добавляет заголовок, а когда я вернулся к MVC4 - заголовок ушел.

Кто-нибудь знает, как удалить это значение по умолчанию из MVC5?

4b9b3361

Ответ 1

MVC5 автоматически добавляет HTTP-заголовок X-Frame-Options с помощью SAMEORIGIN. Это предотвратит загрузку вашего сайта в iframe.

Но мы можем отключить это в Application_Start в Global.asax.cs.

Пример

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

Обновление

Я написал сообщение об этом MVC5 предотвращает загрузку вашего сайта в IFRAME

Ответ 2

Попробуйте что-то подобное в Global.asax:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
 {
   HttpContext.Current.Response.Headers.Remove("X-Frame-Options");
 }

EDIT:

Посмотрите ответ Колина Бэкона. Это более верно, чем мое.

Короче - не удаляйте этот заголовок, если вы не хотите запускать свой сайт в IFRAME, потому что он откроет уязвимость подлога. Но если вы все еще хотите удалить его - используйте AntiForgeryConfig.SuppressXFrameOptionsHeader = true; в Application_Start, это более чистый способ сделать это.

Ответ 3

Ниже приведен метод расширения для класса HtmlHelper. Сначала он очистит заголовки all X-Frame-Options, а затем добавит один заголовок X-Frame-Options, который обычно добавляется встроенным методом AntiForgeryToken.

Этот метод соответствует настройке SuppressXFrameOptionsHeader, но имеет недостаток в удалении всех ранее добавленных заголовков X-Frame-Options, даже те, у которых есть значения, отличные от SAMEORIGIN.

public static MvcHtmlString AntiForgeryTokenSingleHeader(this HtmlHelper html)
{
    string token = AntiForgery.GetHtml().ToString();
    HttpResponseBase httpResponse = html.ViewContext.HttpContext.Response;

    httpResponse.Headers.Remove("X-Frame-Options");
    if (!AntiForgeryConfig.SuppressXFrameOptionsHeader)
    {
        httpResponse.AddHeader("X-Frame-Options", "SAMEORIGIN");
    }
    return new MvcHtmlString(token);
}

Ответ 4

Если вам нужна дополнительная гибкость, здесь ActionAttribute добавляет/удаляет заголовки на основе белого списка. Если реферер не включен в белый список, заголовок SAMEORIGIN остается на месте. Я собирался вставить код, но SO жалуется на длину.

https://long2know.com/2016/06/asp-net-anti-forgery-xframe-options/