मैं एक सर्वर से WMS परतों को प्रदर्शित करने के लिए OpenLayers 2.12 का उपयोग करने का प्रयास कर रहा हूं जिसमें HTTP बेसिक प्रमाणीकरण सक्षम है।
मैंने अपने जावास्क्रिप्ट कोड में 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
});
बेशक यह सुरक्षित नहीं है क्योंकि क्रेडेंशियल्स जावास्क्रिप्ट कोड में संग्रहीत हैं और सभी ब्राउज़रों में काम नहीं करते हैं। Internet Explorer 8 OpenLayers.js को इंगित करने में सुरक्षा त्रुटि देता है और मानचित्र को प्रदर्शित करने से इनकार करता है। फ़ायरफ़ॉक्स 13 कुछ प्रमाणीकरण संवादों को पॉप अप करता है जिन्हें मैं रद्द कर सकता हूं (इसके बाद मानचित्र सही ढंग से प्रदर्शित होता है)। Chrome 23 में प्रमाणीकरण त्रुटिपूर्ण रूप से काम करता है।
क्या आप इस बात की पुष्टि कर सकते हैं कि URL में एन्कोडिंग करके और उदाहरण में OpenLayers को देकर HTTP बेसिक ऑथेंटिकेशन को क्रॉस-ब्राउज़र तरीके से हैंडल करना संभव नहीं है?
क्या आप HTTP मूल प्रमाणीकरण को संभालने के लिए वैकल्पिक तरीके सुझा सकते हैं ताकि यह उपयोगकर्ता के लिए पारदर्शी रूप से काम करे (कोई प्रमाणीकरण पॉपअप प्रदर्शित नहीं हो)? शायद इसके आसपास काम करने के लिए किसी तरह के प्रॉक्सी सर्वर का उपयोग करें।