2016-04-19 22 views
0

OpenLayersがデスクトップアプリケーションに組み込まれているため、認証が必要なサーバーからWMSマップレイヤーを要求しようとしています。OpenLayersの基本認証3

環境のため、ブラウザーが通常は認証を要求するために表示するポップアップを作成することができず、とにかく顧客には受け入れられません。

今のところ私はhttps:// {username}:{password} @ domain.com/wmsの形式を使用しますか?

私がol.source.TileWMSのURLとしてOpenLayersに渡した場合、リクエストにはユーザー名とパスワードが削除されています。私はいつも401エラーが返ってきて、ユーザー名とパスワードは削除されています。

+0

jqueryを使用してリクエストを送信できますか? http://stackoverflow.com/a/5507289/2730610 – Timh

答えて

0

tileUrlFunctionを使用してレイヤを作成できます。

var tileUrlFunction = function(tileCoord, pixelRatio, projection) { 
    if (!tileCoord) { return ""; } 

    var x = tileCoord[1]; 
    var y = tileCoord[2]; 
    var z = tileCoord[0]; 

    return 'https://{username}:{password}@localhost/map-tiles/' + z + '/' + x + '/' + y + '.png'; 
} 

var layers = [ 
    new ol.layer.Tile({ 
    source: new ol.source.XYZ({ 
     tileUrlFunction: tileUrlFunction 
    }) 
    }) 
]; 

EDIT:組み込みの使用「ユーザー:パスワード」URLでの認証はRFC 3986によって廃止されましたので、これはもはや現代のブラウザでは動作しません。

+0

URLの非公開認証情報が原因で、多くのブラウザがこのリクエストをブロックすることが判明しました。 –

+0

ありがとう、私はそれを認識していませんでした。 –

+1

よろしくお願いします!それは痛みですが、意味があります。代わりにhttpヘッダーを使用することを検討してください。 –