Tôi đang cố gắng sử dụng OpenLayers 2.12 để hiển thị các lớp WMS từ máy chủ có bật Xác thực cơ bản HTTP.
Tôi đã cố gắng xử lý xác thực bằng cách đặt tên người dùng và mật khẩu vào tham số URL trong mã JavaScript của mình. Tạo lớp ví dụ:
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
});
Tất nhiên điều này không an toàn vì thông tin đăng nhập được lưu trữ trong mã JavaScript và không hoạt động trong tất cả các trình duyệt. Internet Explorer 8 cung cấp lỗi bảo mật trỏ đến OpenLayers.js và từ chối hiển thị bản đồ. Firefox 13 bật lên một số hộp thoại xác thực mà tôi có thể hủy (bản đồ sẽ hiển thị chính xác sau đó). Trong Chrome 23, xác thực dường như hoạt động hoàn hảo.
Bạn có thể xác nhận rằng không thể xử lý xác thực cơ bản HTTP theo cách đa trình duyệt bằng cách mã hóa nó trong URL và đưa nó cho OpenLayers như trong ví dụ không?
Bạn có thể đề xuất các cách khác để xử lý xác thực cơ bản HTTP để nó hoạt động minh bạch cho người dùng (không có cửa sổ bật lên xác thực nào được hiển thị) không? Có lẽ sử dụng một số loại máy chủ proxy để làm việc này.