OpenLayers.jsで質問です。OpenLayers.Layer.Bing関数を用いることでBing地図データを呼び出すことができますが、呼出元をSSL領域に置いていますとIE9の場合なら「セキュリティで保護されているコンテンツのみ表示されます」と最初に警告が出てきます。警告を出さないようにするにはどうすれば良いのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/02/15 10:55:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:fiwa No.4

回答回数1200ベストアンサー獲得回数253

ポイント125pt

ローカルで動かしてみたら、確かにマップタイルとロゴはhttpでしか取得できなかったので、こちらの最後にあったファイルをダウンロードしてきてローカルでもhttps経由でタイルとロゴを取得できるように書き換えてみたら、実際にhttpsで取ることができました。
https://github.com/openlayers/openlayers/pull/700

f:id:fiwa:20130214114848p:image

こちらのpropertyにある"protocol"と"protocolRegex"が関わっているようですから、上の例の変更履歴を参考にするとよいのではないかと思います(例えばこのへんとか)。
以上、参考になると良いのですが。

他1件のコメントを見る
id:fiwa

分かりにくい書き方ですみません。私が取ってきたのはこちらからでした。
https://github.com/ahocevar/openlayers

https://github.com/ahocevar/openlayers/archive/master.zipでまるごとダウンロードしてきて、解凍した~/openlayers-master/lib/OpenLayers/Layer/Bing.js
の112行目を次のようにして(file:///からhttpsで取る)、

protocol: ~window.location.href.indexOf('http') ? '' : 'https:',

~/openlayers-master/examples/bing.html
からアクセスしたら、ローカルでもhttpsでタイルを取れた、ということです。
https://github.com/openlayers/openlayers/pull/700
にて変更履歴が追えると思いますが、propertyのところだけではなくてあちこち変更されているようです。

2013/02/14 18:44:11
id:halohalolin

fiwaさんありがとうございます

私は、https://github.com/openlayers/openlayers からもう一度落とし直しましたが、同様の対応でhttpsからデータを取得し、問題解決することが出来ました!

2013/02/15 12:20:40

その他の回答3件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント125pt

http://snow-white.cocolog-nifty.com/first/2012/04/ie9-web-feb3.html

セキュリティ設定を変えるか、SSL混在にせずに すべて SSLにするかしたらいいですね。

他4件のコメントを見る
id:taknt

ブラウザがそれを勝手に判断して メッセージを出しているので・・・。

2013/02/08 12:00:59
id:halohalolin

var road = new OpenLayers.Layer.OSM(); とすると先の警告が出てこないので、問題はBing地図の呼び出し方に違いないと考えています。
なにかよい対処法があればよろしくお願いします。

2013/02/08 13:30:27
id:halohalolin

なお、Internet Explorerのセキュリティ設定を変更して、警告を出さないようにするという手はなしでお願いします。

id:oil999 No.2

回答回数1728ベストアンサー獲得回数320

ポイント125pt
  1. IE→[ツール]→[インターネットオプション]→[セキュリティ]タブを開きます。
  2. [レベルのカスタマイズ]ボタンをクリックします。
  3. セキュリティ設定の「その他」のカテゴリになる、「混在したコンテンツを表示する」を「有効にする」にして[OK]ボタンをクリックします。

http://starfort.cocolog-nifty.com/voorlihter/images/2009/04/30/security2.gif

Bingの画像をSSLで送ることは、今のところできません。

id:halohalolin

oil999さんありがとうございます

Bing地図のタイル画像をSSLで送れないとは、どこかに記載がありますか?
よろしければ教えて下さい。

2013/02/08 13:52:18
id:taroe No.3

回答回数1099ベストアンサー獲得回数132

他1件のコメントを見る
id:taknt

アクセスはできますよ。
ただ ブラウザが エラーにしてるだけで。

2013/02/12 20:01:19
id:halohalolin

きゃづみぃさん、お付き有りありがとうございます

質問文には触れていませんが、ブラウザがただ警告を出しているだけなので無視すればいい…という理屈を、今回の私が遭遇している要件で認めてもらうのは難しいです

ですので、もしブラウザが警告を出すことなく、結果を出す方法をご存知でしたらよろしくお願いします

2013/02/12 20:40:17
id:fiwa No.4

回答回数1200ベストアンサー獲得回数253ここでベストアンサー

ポイント125pt

ローカルで動かしてみたら、確かにマップタイルとロゴはhttpでしか取得できなかったので、こちらの最後にあったファイルをダウンロードしてきてローカルでもhttps経由でタイルとロゴを取得できるように書き換えてみたら、実際にhttpsで取ることができました。
https://github.com/openlayers/openlayers/pull/700

f:id:fiwa:20130214114848p:image

こちらのpropertyにある"protocol"と"protocolRegex"が関わっているようですから、上の例の変更履歴を参考にするとよいのではないかと思います(例えばこのへんとか)。
以上、参考になると良いのですが。

他1件のコメントを見る
id:fiwa

分かりにくい書き方ですみません。私が取ってきたのはこちらからでした。
https://github.com/ahocevar/openlayers

https://github.com/ahocevar/openlayers/archive/master.zipでまるごとダウンロードしてきて、解凍した~/openlayers-master/lib/OpenLayers/Layer/Bing.js
の112行目を次のようにして(file:///からhttpsで取る)、

protocol: ~window.location.href.indexOf('http') ? '' : 'https:',

~/openlayers-master/examples/bing.html
からアクセスしたら、ローカルでもhttpsでタイルを取れた、ということです。
https://github.com/openlayers/openlayers/pull/700
にて変更履歴が追えると思いますが、propertyのところだけではなくてあちこち変更されているようです。

2013/02/14 18:44:11
id:halohalolin

fiwaさんありがとうございます

私は、https://github.com/openlayers/openlayers からもう一度落とし直しましたが、同様の対応でhttpsからデータを取得し、問題解決することが出来ました!

2013/02/15 12:20:40
  • id:fiwa
    OpenLayers.Layer.Bingで使っているBing Map REST Servicesの呼び出しがhttpsになっていないから?
    https://github.com/openlayers/openlayers/pull/699
    http://msdn.microsoft.com/en-us/library/ff701720.aspx
  • id:taknt
    呼び出し元ってどっちか わかんないけど 両方 httpsにしないといけないよね。
  • id:a-kuma3
    >OpenLayers.Layer.Bingで使っているBing Map REST Servicesの呼び出しがhttpsになっていないから?

    ああ、Bing.js の 148行目。
    ばっちり固定で書いてある。

    http://dev.openlayers.org/releases/OpenLayers-2.12/lib/OpenLayers/Layer/Bing.js

    var url = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/" +
    this.type + "?" + OpenLayers.Util.getParameterString(params);
  • id:halohalolin
    a-kuma3さんありがとうございます。

    この手の内容を手動でhttpsに直したら動くかなとか試していたんですけど
    今のところうまく行っていないですorz

    OSMがすでに対応しているのに、天下のMicrosoftだから対応していないはずはない!とか思って調べているんですが。
  • id:a-kuma3
    >今のところうまく行っていないですorz
    動作するけど、警告のダイアログが出てくる、ってことですよね。
    まだ、http 固定で書いてあるところがあるのかなあ。
    Firefox の Webコンソールを使うと、そのページで出しているリクエストを全て確認できるので、そこから http なプロトコルを使ってるところを探るのが良いと思います。

    この三連休も仕事三昧(ひーっ ><。)で、あまりお力になれそうもないのですけれど...

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません