« UserPrivateGroup の使いどころ | メイン | 和訳してみた »

Google Maps API を SSL で使えるようにしてみる。

2008/03 : /maps?file=api を書き換えるための正規表現のパターンを微調整しました。

2008/05/15 : 通りすがりさんの報告を受けて、正規表現のパターンをさらに微調整しました。

2008/07/25 : また API に変更があったようで、機能しなくなったので、 正規表現のパターンを緩めに調整しました。

Google Maps API は HTTPS では提供されていないらしい。
(Google Analytics には HTTPS 版もある。というのは先日知りました。)

しかし、HTTPS なページに、HTTP なリソースを読み込むと IE 曰く、
「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています」と。

この問題を何とかしなければならない機会があったので、
HTTPS な proxy をかまして何とかしてみた。

要するに、 Google Maps API を使うためには、普通

http://maps.google.com/maps?file=api&v=2&key=...

っていう JavaScript を読み込むけれども、
まずこの JavaScript を https://(自前の proxy )経由でリクエストし、
この JavaScript にハードコードされている http://... を
https://(自前の proxy )経由でリクエストするように書き換えれば良いだけ。
以下は PHP での例。

デモ: https://ssl.tonextone.com/neta/gmap_over_ssl/

# SSL の証明書を買っていないので、その旨の警告は出ます。

./rewrite_gmaps_api.php


./proxy.php

トラックバック

このエントリーのトラックバックURL:
http://tonextone.com/type/app/mt-tb.cgi/18

この一覧は、次のエントリーを参照しています: Google Maps API を SSL で使えるようにしてみる。:

» LL-navi/制作/Mysidia制作/確認用Mysidia 送信元 LL-navi Development Wiki (PukiWiki/TrackBack 0.4)
SSLでGoogleMapsを使う プロキシを使うらしい http://tonextone.com/type/2007/10/02-0112.html [詳しくはこちら]

コメント (8)

でもやっぱり重い。

prova:

Hello,
can you make a version for people not using PEAR extensions?

Thanks

To: prova

thanks for your attention.

it is just a quick hack for my case.

i think i can make another version for someone (with her/his choice of HTTP-client),
but not for everyone (with hundreds of varieties of HTTP-client).

i hope its concept helps.

# sorry i am too late to reply.

通りすがり:

とても助かりました。
しばらく試験していたところ、IE が証明書の警告を出したので、調べると

http://maps.google.com/intl/en_ALL/mapfiles/110a/maps2

こんなレスポンスがあったので、rewrite_gmaps_api.php に
次の変更([0-9] → [0-9a-z])を行ったら、警告が消えました。
ちゃんと確認してないので、間違っていたらゴメンナサイ。

[変更前]
$pattern = array(
'<"(http://[^/\.]+\.google\.com/intl/en_ALL/mapfiles/[0-9]+/maps2)" *\+ *"(\.api/main\.js)">',

[変更後]
$pattern = array(
'<"(http://[^/\.]+\.google\.com/intl/en_ALL/mapfiles/[0-9a-z]+/maps2)" *\+ *"(\.api/main\.js)">',

通りすがりさん

こちらこそ、ご報告ありがとうございます。
試してみます。

PHPコードを参考にJavaで作りました。どうもありがとうございます。

Google の API 変更により、この方法では、現在 proxy しきれなくなっているようです...orz
すぐに思いつくような対策も無く、困りました。

いや、正規表現のパターン修正でいけた。
あとで追記します。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

アーカイブ

フィード

このブログ

RSS 2.0 / ATOM

AdSense

del.icio.us

flickr