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=';

posted on 2013-06-09 15:59  vedusoft  阅读(549)  评论(0编辑  收藏  举报