1

我试图解决在一个域上托管 Geoserver 地图图层以及通过 OpenLayers WMSGetFeatureInfo 在另一个域上访问它们的 html 文件所涉及的跨域问题。当然,当html 文件在同一个域上时,这很好用(单击多边形,您应该会得到一个包含该功能信息的弹出窗口)。我在这个网站和其他网站上看到过一些类似的帖子,但没有一个能解决这个问题:

当我提交包含我的 php 代理的 URL 时,例如http://greengeography.org/projects/oregonwild/curlproxy3.php?url=http://www.google.com,它工作正常。但是当我尝试来自我的 Amazon EC2 站点(运行 Linux 和 Tomcat 6 btw)的任何 URL 时,例如http://greengeography.org/projects/oregonwild/curlproxy3.php?url=http://50.112.123.161:8080,结果我得到一个0。并且该 IP 地址可以自行访问。

这是我的 php(我也尝试过get_file_contents方法):

<?php

    $url = $_REQUEST["url"];

    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'POST HTTP/1.0',
            'Content-type: text/xml;charset="UTF-8"',
            'Accept: text/xml',
            'Cache-Control: no-cache',
            'Pragma: no-cache'
        ));
    $theData = curl_exec($curl);
    curl_close($curl);

    echo $theData;

?>

还有我的 OpenLayers/GeoExt:

OpenLayers.ProxyHost = "curlproxy3.php?url=";

var featureInfo = new OpenLayers.Control.WMSGetFeatureInfo({
         url: 'http://50.112.123.161:8080/geoserver/OR_wild_wkspc/wms',
         queryVisible: true,  
         FEATURE_COUNT: 1,
         exceptions: "application/vnd.ogc.se_xml",       
         layerUrls: ["http://50.112.123.161:8080/geoserver/gwc/service/wms"],
            eventListeners: {
                getfeatureinfo: function(e) {
                     new GeoExt.Popup({
                     title: "Feature Info",
                     width: 400,
                     autoHeight: true,
                     autoScroll: true,
                     queryVisible: true,
                     map: map,
                     lonlat: mapPanel.map.getLonLatFromPixel(e.xy),
                     html: e.text
                    }).show();
                }
            }
    });

mapPanel.map.addControl(featureInfo);
featureInfo.activate();

另外,很抱歉,这是一个小问题,在我让代理工作之前我什至无法解决,但是当我点击主站点上的一个功能时,我收到以下信息:未捕获的类型错误:无法读取属性'x' 的 null。也无法弄清楚那个。

有什么想法吗?我认为这是 Tomcat 或我的 Linux/Amazon 环境中的某些设置的问题,而不是 php,因为我对指向其他站点的代理没有问题。哦,我的 php 经验很少,所以如果可能的话,请把它放低。谢谢!

4

0 回答 0