経緯
遥か過去に Google Map の埋め込みをしていたページでいつの間にかエラーが発生するようになっていました。
Refused to display ‘http://maps.google.co.jp/’ in a frame because it set ‘X-Frame-Options’ to ‘sameorigin’.
エラー文を読むと X-Frame-Options: sameorigin
が Google Map からのレスポンスヘッダに付いていることが原因のようです。
なお、埋め込みのiframe
タグは以下のようなコードです。
<iframe
src="https://maps.google.co.jp/maps?q=G3VQ%2B655+%E3%82%AA%E3%83%BC%E3%83%A0%E3%82%B9%E3%82%AB%E3%83%BC%E3%82%AF%2C+%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9&z=18&iwloc=J&t=m&output=embed"
width="600"
height="600"
frameborder="0"
scrolling="no"
marginheight="0"
marginwidth="0"
></iframe>
原因と対処
直接原因としては Google Map の埋め込みURL が http://maps.google.co.jp/maps?~
だったことが原因でした。対処としては、 https://maps.google.co.jp/maps?~
にすればOKです。
そもそもiframe
タグによる埋め込みが存在するページそのものが https://example.com/~
の場合はそもそもHTTPS通信の中にHTTP通信が混在している、ということで別の理由でエラーになってしまいます。
今回はそうではなく、埋め込みがしているページが http://example.com/~
だったのですが、だからこそ X-Frame-Options: sameorigin
で制約を設けている(Google Map との通信はHTTPS通信化するか、できない名合は同じオリジンのみ、として通信のセキュリティを担保する)、ということだろうと考えられます(そもそも今どきHTTPSではないって……というところは至極その通りですが……)。
そこで問題を解決するには、 Google MAp との通信をHTTPS通信にする、つまりURLを http://maps.google.co.jp/maps?~
から https://maps.google.co.jp/maps?~
にすればOK、ということです。
検索すると、埋め込み用のパラメータ &output=embed
を &output=svembed
にすれば良い、という情報もありましたが、今回はその方法ではNGでした。
参考
- Google マップを Web ページ オブジェクトとして埋め込むときのエラー “www.google.com refused to connect” または “The Google Maps Embed API must be used in an iframe” | Tableau Software
- 本日、2021/5/26になってからiframeでの埋め込みのgoogle MAPが表示されなくなりました。 – Google マップ コミュニティ
- 自分のサイトに他のサイトを埋め込みたい