正如在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
答案 0 :(得分:1)
在文件顶部有一个允许的主机列表(如下所示)。
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因超时问题而失败。我会看看你的防火墙设置或类似情况。