【问题标题】:Leaflet, OSM: secure tile server传单,OSM:安全瓦片服务器
【发布时间】:2018-05-25 17:11:24
【问题描述】:

我有自己的 OSM 服务器,然后是我的 web 应用程序的 Tomcat 后端。

我使用传单加载这样的图块:http://MAP_SERVER_IP/tiles/{z}/{x}/{y}.png

但我希望请求类似于:http://APP_SERVER/webapp/validation_servlet?z,x,y

这样 'validation_servlet' 可以验证请求,然后将响应变为真实 url 的内容:http://MAP_SERVER_IP/tiles/{z}/{x}/{y}.png

我尝试使用重定向,但传单似乎不遵循重定向。

这段代码是validation_servlet的响应:

<html><head><meta http-equiv="refresh" content="0; url=http://MAP_SERVER_IP/tiles/'+trim(&x)+'/'+trim(&y)+'/'+trim(&z)+'.png" /></head></html>

其中 &x、&y 和 &z 是从传单请求中接收到的参数。该 URL 在浏览器中运行良好,并遵循重定向。但从传单来看,它没有。

另外,我不希望 APP_SERVER 下载磁贴然后提供它。

目标是“保护”对我的磁贴服务器的访问。所以不应该看到真正的磁贴 URL。

有什么想法吗???

提前致谢!

【问题讨论】:

    标签: java tomcat leaflet openstreetmap


    【解决方案1】:

    只需定义您的 L.TileLayer 即可:

    var tiles = L.tileLayer('http://APP_SERVER/webapp/validation_servlet?{z},{x},{y}');
    tiles.addTo(map);
    

    你也指出:

    目标是“保护”对我的磁贴服务器的访问。所以永远不应该看到真正的磁贴 URL。

    [...]

    另外,我不希望 APP_SERVER 下载磁贴然后提供它。

    请注意,这两个目标不能同时实现。您可以代理该磁贴(从您的APP_SERVER 获取它并隐藏其来源),或者您重定向到该磁贴(节省您的APP_SERVER 一些带宽和资源,但将最终的磁贴 URL 发送到浏览器)。

    【讨论】:

    • 谢谢伊万桑切斯。我担心如果不将磁盘空间增加一倍,这是不可能的。再次感谢。费德里科。
    • 您不需要加倍磁盘空间 - 您可以在不使用缓存的情况下代理请求,或使用选择性缓存(例如 MRU 队列)。这取决于您是要使用更多的本地存储还是更多的网络带宽。
    • 当然!我认为应该尽快交付瓷砖。或许我试试不保存代理中的资源,看看是不是增加了太多延迟。非常感谢伊万。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多