2

Я пытаюсь загрузить Google Maps в IFRAME с помощью MVC5, но я получаю заблокирован с ошибкойРазрешить кадр из другого домена с MVC5

Отказался для отображения «https://www.google.com/maps?cid=XXXXX» в кадре, потому что он установлен «X -Frame-Options 'в' SAMEORIGIN '.

Таким образом, после долгих поисков, я попытался следующие:

  • Добавление AntiForgeryConfig.SuppressXFrameOptionsHeader = true; к Application_Start в global.ascx

  • Создание атрибута (попытался это и без установки в global.ascx):

    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
        if (filterContext != null) 
        { 
         filterContext.HttpContext.Response.Headers["X-Frame-Options"] = "ALLOW-FROM https://www.google.com"; 
         base.OnActionExecuted(filterContext); 
        } 
    } 
    
  • tryi нг атрибут OnResultExecuted(ResultExecutedContext filterContext) вместо OnActionExecuted

  • удалить его в web.config:

    <httpProtocol> 
        <customHeaders> 
         <remove name="X-Frame-Options" /> 
        </customHeaders> 
    </httpProtocol> 
    

Есть ли что-то я не хватает? как мне избавиться от этого http-заголовка (или, по крайней мере, изменить его, чтобы разрешить карты)?

Update

Я только что проверил заголовки отправленных и они правы в том, что они либо говорят

X-Frame-Options: ПОЗВОЛЯЮТ-ОТ https://www.google.com

Или вообще не существует, если я удаляю атрибут, но сохраняю обновление global.ascx

Тем не менее, когда я запускаю страницу и вижу эти заголовки, она все равно дает мне ошибку SAMEORIGIN.

ответ

1

Как оказалось, я был абсолютно глуп и непонят, как работают x-frame-options. Это означает, что ваша страница сайта будет отображаться на другом сайте с помощью iframe.

Итак, http-заголовок x-frame-options, который я получал для SAMEORIGIN, на самом деле поступал из Google. Я думал, что, поскольку URL-адрес был возвращен из своих мест api, я мог бы просто использовать его, но, видимо, вы можете только ссылаться на него.

Создание нового ключа Map API и позволяет карты вставлять апи, я был в состоянии использовать place_id вместо и вызовите следующий URL в IFRAME:

https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY&q=place_id:PLACE_ID 

И это покажет без меня получать заголовок (или делать что-то дополнительное для моих заголовков).

Я оставлю это здесь на всякий случай, если кто-либо такой же глупый, как я.