OpenLayers 2.12を使用して、HTTP基本認証が有効になっているサーバーからWMSレイヤーを表示しようとしています。
JavaScriptコードのURLパラメーターにユーザー名とパスワードを入力して、認証を処理しようとしました。レイヤー作成の例:
myLayer = new OpenLayers.Layer.WMS('background',
'https://username:password@ws.nls.fi/rasteriaineistot/image?',
{
layers: 'background',
bbox: '-380188,6249943,1347312,8226943'
},
{
displayInLayerSwitcher: true,
isBaseLayer: false,
projection: 'EPSG:3067',
visibility: true
});
もちろん、資格情報はJavaScriptコードに保存され、すべてのブラウザーで機能するわけではないため、これは安全ではありません。Internet Explorer 8では、OpenLayers.jsを指すセキュリティエラーが発生し、マップの表示は一切拒否されます。Firefox 13は、キャンセルできる認証ダイアログをポップアップ表示します(その後、マップが正しく表示されます)。Chrome 23では、認証は問題なく動作するようです。
HTTPベーシック認証をURLでエンコードし、例のようにOpenLayersに渡すことで、クロスブラウザー方式でHTTP基本認証を処理できないことを確認できますか?
HTTP基本認証を処理してユーザーに透過的に機能する(認証ポップアップが表示されない)別の方法を提案できますか?この問題を回避するには、おそらく何らかの種類のプロキシサーバーを使用してください。