2016-02-05 35 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 

,這將表明沒有我得到頭(或者做任何額外的我的頭)。

我會在這裏留下這個以防萬一有人像我一樣傻了