2008/03 : /maps?file=api を書き換えるための正規表現のパターンを微調整しました。
2008/05/15 : 通りすがりさんの報告を受けて、正規表現のパターンをさらに微調整しました。
2008/07/25 : Google 側のコードに変更があったようで、機能しなくなったので、 正規表現のパターンを緩めに調整しました。
2009/07/19 : kobuchi さんの報告を受けて、修正しました。
Google 側のコードの変更により /maps?file=api だけではなく、そこから先で動的にロードされる JS ファイルの内部も書き換えることが必要になったので、そのように変更しました。
(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
コメント (14)
でもやっぱり重い。
投稿者: master | 2007年10月02日 01:47
Hello,
can you make a version for people not using PEAR extensions?
Thanks
投稿者: prova | 2008年01月23日 07:12
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.
投稿者: master | 2008年02月17日 23:40
とても助かりました。
しばらく試験していたところ、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)">',
投稿者: 通りすがり | 2008年05月14日 14:45
通りすがりさん
こちらこそ、ご報告ありがとうございます。
試してみます。
投稿者: master | 2008年05月14日 16:41
PHPコードを参考にJavaで作りました。どうもありがとうございます。
投稿者: uriyuri | 2008年06月28日 14:33
Google の API 変更により、この方法では、現在 proxy しきれなくなっているようです...orz
すぐに思いつくような対策も無く、困りました。
投稿者: master | 2008年07月25日 15:21
いや、正規表現のパターン修正でいけた。
あとで追記します。
投稿者: master | 2008年07月25日 16:06
SSL経由でGooglemapを表示させる方法を探していて、
この記事を見つけました。参考になるエントリーをありがとうございます。
恐縮なのですが、一点質問させてください。
「https://★SERVER_NAME★/proxy.php/http://maps.google.com/intl/en_ALL/mapfiles/151e/maps2/main.js」
というように、中のURLの書き換えは成功しているのですが、
「proxy.php/~~/main.js」が"proxy.php"で動作せず、そのままのディレクトリ構造と認識してしまい
正しく動作しない状態です。
このような形式の引数渡し?には、何かサーバ側の設定が必要でしょうか。
申し訳ありませんが、ご教示頂ければ助かります。
宜しくお願いします。
投稿者: nabesi | 2009年04月24日 17:12
phpinfo() を出力するだけの phpinfo.php を
https://★SERVER_NAME★/phpinfo.php
と配置して、
https://★SERVER_NAME★/phpinfo.php/foo/bar
をリクエストしたらどうなりますか?
phpinfo が出力されるようなら、 PATH_INFO が "/foo/bar" になっているかどうか確認してみてください。
phpinfo が出力されない、または PATH_INFO が取得できていなければ、 CGI として PHP を利用している可能性があります。
その場合は、こちらを参照してください。
http://jp.php.net/manual/ja/security.cgi-bin.php
http://jp.php.net/manual/ja/ini.core.php#ini.cgi.fix-pathinfo
投稿者: master | 2009年04月25日 01:10
あるいは、 Apache2 をお使いでしたら、この辺かもしれません。
http://httpd.apache.org/docs/2.0/ja/mod/core.html#acceptpathinfo
投稿者: master | 2009年04月25日 01:25
今現在、動作しています??
IE7でダイアログが出るようですが・・・
投稿者: kobuchi | 2009年07月17日 14:23
そのようです。ご報告、どうもありがとうございます。
今日明日中に、パターンを更新してみます。
ちなみにどう対処するかというと、
rewrite_gmaps_api を通した後の javascript のソースコードを見て、"http://"を探します。
https://ssl.tonextone.com/neta/gmap_over_ssl/rewrite_gmaps_api.php?file=api&v=2.x&key=ABQIAAAAWRicxZ_3m1Wk0AfH3OO7MxRAUcBNGVpT8Ki_cIVKwjvJeSp-ghTMKqB8GwTAwOb4RHwo-LHxFmHRuQ
つまり、 https の proxy を経由せずに、http でリクエストが発生しそうな部分を見つけます。
それで、 proxy し損なっている URL も含めて、ちゃんと proxy されるように、
正規表現のパターンを修正するわけです。
投稿者: master | 2009年07月17日 17:18
はじめまして。
現在、載っているソースでは動かないようですが、
最新のソースを教えていただけないでしょうか?
よろしくお願いいたします。
投稿者: よう | 2011年02月20日 01:12