OpenLayers Proxyhost无法正常工作

时间:2012-12-05 09:53:14

标签: proxy openlayers geoserver

正如在http://trac.osgeo.org/openlayers/wiki/FrequentlyAskedQuestions#ProxyHost中所说的那样,我确实将proxy.cgi文件放在文档所说的服务器中,并且显示了openlayer页面,同时转到“http://mydomain.com/cgi-bin/ proxy.cgi”。这意味着为服务器正确完成了代理设置。但是当我尝试使用我的脚本时,使用此代理它不起作用。 我在我的脚本中添加了“OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";”。这样就可以使用代理了。

我的代码在这里无效。

ainSelect = new OpenLayers.Control.WMSGetFeatureInfo({
                    url: 'http://ec2-23-22-12-137.compute-1.amazonaws.com:8080/geoserver/KCRE/wms',
                    title: 'Identify features by clicking',
                    layers: [lyrParcels],
                    queryVisible: true
                });
ainSelect.infoFormat = 'application/vnd.ogc.gml';
                ainSelect.events.register("getfeatureinfo", this, pickAINid);
                map.addControl(ainSelect);
                ainSelect.activate();

并且pickAIN函数是:

function pickAINid(e) {
            //alert(e.features.length);
            if (e.features && e.features.length) {

                var val = e.features[0].attributes.ain;
                alert(val);
                //document.getElementById('roadId').value = val;
            }
        }

所以当我点击地图时它应该提醒我AIN号码。据我所知,它是e.features.length = 0.这意味着WMSGetFeatureInfo无法正常工作。

请注意我已经使用了图层:[lyrParcels]我创建了那个图层,之前代码我还没有给出。

另一点。当我从本地运行此代码时,此代码工作正常。

谁能告诉我我做错了什么?是在这个“OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";”行吗?

提前致谢。

问候 Mahbubul Haque

1 个答案:

答案 0 :(得分:1)

在proxy.cgi中,

在文件顶部有一个允许的主机列表(如下所示)。

allowedHosts = ['www.openlayers.org', 'openlayers.org', 
            'labs.metacarta.com', 'world.freemap.in', 
            'prototype.openmnnd.org', 'geo.openplans.org',
            'sigma.openplans.org', 'demo.opengeo.org',
            'www.openstreetmap.org', 'sample.azavea.com',
            'v2.suite.opengeo.org', 'v-swe.uni-muenster.de:8080', 
            'vmap0.tiles.osgeo.org', 'www.openrouteservice.org'] 

如果您还没有需要添加您所联系的服务器的域(以及您的案例中的端口,而不是80),在这种情况下:

ec2-23-22-12-137.compute-1.amazonaws.com:8080

如果这不是问题的根源,您可以从javascript调试器中提供更多信息,例如当您尝试通过代理发出请求时显示任何错误或警告的firebug。

<强>更新

通过在您的服务器上测试您的代理,您的网络内部有与端口8080的连接问题。

这可以通过尝试网址进行测试

http://kleincom.com/cgi-bin/proxy.cgi?url=http://v-swe.uni-muenster.de:8080

http://kleincom.com/cgi-bin/proxy.cgi?url=http://labs.metacarta.com

metacarta url工作正常但是muenster url因超时问题而失败。我会看看你的防火墙设置或类似情况。