0

我知道可以在浏览器中使用带有如下 URL 的谷歌地图打开 KMZ 或 KML 文件:

https://maps.google.it/maps?q=http://myserver.com/mymap.kmz

但我只想让经过身份验证的用户打开该 kmz。为此,我使用 .htaccess 保护了我的 kmz 文件夹,我编写了一个 php 页面来检查用户是否已登录,并且只有在通过该检查后,它才会返回 kmz 文件:

...
if(isset($_SESSION['trusted'])) {
    if(isset($_GET['map']) && $_GET['map']!="") {
        $map = $_GET['map'];
        readfile("./kmz/$map");
}
...

所以,现在我的网址是:

https://maps.google.it/maps?q=http://myserver.com/requestkmz.php?map=mymap.kmz

问题似乎是 php 使用 readfile 返回的文件与文件系统中的原始文件不同。我需要放置标题或指定编码吗?


更新

我在 php 文件中添加了一个标头,但我得到了相同的结果:生成的 KMZ 与原始文件一样无效。这是在 readfile 行之前添加的标题:

header("Cache-Control: no-cache, no-store, must-revalidate"); 
header('Content-Type: application/vnd.google-earth.kmz');
header("Content-Disposition: inline");
header("Content-Description: KMZ data intended for Google Earth");
4

1 回答 1

1

对 KMZ 文件的请求来自 google,而不是来自用户(当您查看控制台-> 网络时,您会发现对 KMZ 文件没有任何请求)。

所以唯一需要授权的“用户”就是谷歌。

意味着:这是不可能的(除非您通过 KMZ-URL 传递对用户进行身份验证所需的凭据,但这当然是不安全的)

于 2014-05-09T14:44:15.657 回答