Asp.net页面中OpenLayers跨域访问GeoServer时用代理
在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=';
浙公网安备 33010602011771号