人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: くじぇ
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● きゃづみぃ
●125ポイント

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

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


くじぇさんのコメント
takntさんありがとうございます。 1.説明が抜けていてすみません、セキュリティ設定を変えるというのはなしでお願いします 2.全てをSSLにしたいので lib/OpenLayers/Layer/Bing.js をいじってみましたが、今のところうまく行かず困っています よろしくお願いします。

きゃづみぃさんのコメント
すべて https://??にするということです。

くじぇさんのコメント
具体的にはOpenLayersの設定をどうすればよいのでしょうか? http://dev.openlayers.org/docs/files/OpenLayers/Layer/Bing-js.html によると、protocolというのがあるのに気がついたので var road = new OpenLayers.Layer.Bing({ name: "道路", key: APIKEY, culture:"ja-JP", protocol:"https:", type: "Road" }); などとしてみましたが、一向に改善されません。

きゃづみぃさんのコメント
問題は SSLの混合なので OpenLayersの設定を変えてもダメでしょう。 呼び出し元がSSLなので 呼び出し側もSSLにしないとダメかと思います。

きゃづみぃさんのコメント
ブラウザがそれを勝手に判断して メッセージを出しているので・・・。

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

質問者から

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


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

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

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


くじぇさんのコメント
oil999さんありがとうございます Bing地図のタイル画像をSSLで送れないとは、どこかに記載がありますか? よろしければ教えて下さい。

3 ● taroe
●125ポイント

RESTの画像は、常にHTTP画像のURLを返します

http://social.msdn.microsoft.com/Forums/en-US/bingmapsservices/thread/fb9d29c5-8379-4699-8c8b-931be62befa3


くじぇさんのコメント
taroeさんありがとうございます 先のURLによるベストな回答によると 「Why are you accessing the tiles directly? There are a lot of restrictions around doing this and you should have a Bing Maps license at a minimum. As for the https, the tiles can be requested using https. I'll refer this to the development team for investigation. ↓ (Google翻訳) ↓ なぜあなたは直接タイルをアクセスしている?そこにこれをやって周りに制限がたくさんあり、あなたは最低でもBing Mapsのライセンスを持っている必要があります。 httpsの場合のように、タイルはhttpsを使用して要求することができます。私は調査のために開発チームにこれを参照することになります。」 ということでHTTPSでアクセスできそうなことが書いてあるように読めます ただ、これはOpenlayersを使ってではなく、直接BingMapApiアクセスした場合かもしれません

きゃづみぃさんのコメント
アクセスはできますよ。 ただ ブラウザが エラーにしてるだけで。

くじぇさんのコメント
きゃづみぃさん、お付き有りありがとうございます 質問文には触れていませんが、ブラウザがただ警告を出しているだけなので無視すればいい…という理屈を、今回の私が遭遇している要件で認めてもらうのは難しいです ですので、もしブラウザが警告を出すことなく、結果を出す方法をご存知でしたらよろしくお願いします

4 ● fiwa
●125ポイント ベストアンサー

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

f:id:fiwa:20130214114848p:image

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


くじぇさんのコメント
fiwaさん心強い情報有り難うございます。 自分がやった場合、うまくいかない(http://でアクセスする)ので 手作業で直すのではなく、 https://raw.github.com/openlayers/openlayers/master/lib/OpenLayers/Layer/Bing.js から取って来たのですが、うまくいかないです。 var mapnik = new OpenLayers.Layer.Bing({ name: "Road.", key: <APIキー>, culture:"ja-JP", protocol:"https:", type: "Road" }); で、呼び出しているんですが、他にも記述がいるのでしょうか?

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のところだけではなくてあちこち変更されているようです。

くじぇさんのコメント
fiwaさんありがとうございます 私は、https://github.com/openlayers/openlayers からもう一度落とし直しましたが、同様の対応でhttpsからデータを取得し、問題解決することが出来ました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ