在asp.net页面中通过OpenLayers访问GeoServer的WMS与WFS服务,因为GeoServer都是运行在tomcat服务器上,所以,AJAX机制访问时,受到浏览器的限制,这就是跨域访问的问题。
这个方法可以解决,在.net的WEB项目中添加一个aspx页面GeoServerProxy.aspx,并将页面中的html都删除,在后台添加代码:
if (Page.Request.QueryString["URL"] != null) { string url = ""; url = Page.Request.QueryString["URL"].ToString(); HttpWebRequest loHttp =(HttpWebRequest)WebRequest.Create(url); loHttp.Timeout = 10000; // 10 secs loHttp.UserAgent = "Web Client"; HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse(); Encoding enc = Encoding.GetEncoding(65001); StreamReader loResponseStream =new StreamReader(loWebResponse.GetResponseStream(), enc); string lcHtml = loResponseStream.ReadToEnd(); Response.Write(lcHtml); loWebResponse.Close(); loResponseStream.Close(); }
在 OpenLayers中,JS中需要这样写
OpenLayers.ProxyHost = 'GeoServerProxy.aspx?URL=';