2016-02-05 72 views
2

我试图加载谷歌使用MVC5映射到的iframe但我正在逐渐被堵塞,错误允许从不同域帧与MVC5

拒绝在一个框架中显示“https://www.google.com/maps?cid=XXXXX”,因为它设置“X -Frame-Options“改为”SAMEORIGIN“。

所以经过一番搜索,我已经试过如下:

  • 在global.ascx

  • 创建属性添加AntiForgeryConfig.SuppressXFrameOptionsHeader = true;Application_Start(已经有和没有设置试过这种在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头(或者至少改变它来允许地图)?

更新

我刚才检查所发送的头,他们是在正确的,他们要么说

X框-选项:允许-FROM https://www.google.com

或者根本没有,如果我删除的属性,但保持global.ascx更新

但是,当我运行该页面并查看这些标题时,它仍然给我SAMEORIGIN错误。

回答

1

事实证明,我一直都很愚蠢,误解了x-frame-options的工作原理。它是通过iframe阻止您的网站页面显示在另一个网站上。

所以我得到的SAMEORIGIN的x-frame-options http头实际上来自google。我认为,因为url是从他们的地方api返回的,我可以使用它,但显然你只能链接到它。

创建一个新的地图API密钥并启用地图嵌入API,我能够使用place_id代替,并调用以下URL的iframe:

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

,这将表明没有我得到头(或者做任何额外的我的头)。

我会在这里留下这个以防万一有人像我一样傻了