十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
环境: 服务器 geoserver2.4.1
目前创新互联建站已为上千多家的企业提供了网站建设、域名、雅安服务器托管、绵阳服务器托管、企业网站设计、清水网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。开发机访问服务器发布的wms 存在跨域问题,研究两天终于找到解决方案。
主要思路是: 使用jquery的ajax 代替Groserver的request, 然后将wms的请求地址转发到.net的处理程序, 使用.net的处理程序进行跨域处理。
function mouseClick(e) { var layer = new Array(); layer = map.getLayersByName("Simple_Geometry"); if (layer != null) for (var i = 0; i < layer.length; i++) { map.removeLayer(layer[i]); } var wms_url = "http://10.72.4.219:8089/geoserver/xj/wms?"; var params = { REQUEST: "GetFeatureInfo", BBOX: map.getExtent().toBBOX(), WIDTH: map.size.w, HEIGHT: map.size.h, X: e.xy.x, Y: e.xy.y, SERVICE: "WMS", QUERY_LAYERS: map.layers[0].params.LAYERS, INFO_FORMAT: 'text/html', FEATURE_COUNT: 50, Layers: 'xj:cswl_group', Styles: "", format: "application/vnd.ogc.gml", EXCEPTIONS: "application/vnd.ogc.se_xml", // Exception 类型 srs: 'EPSG:4326' }; var domainUrl = "crossDomain.ashx?URL="; var request = parpreUrl(wms_url, params); request = encodeURIComponent(encodeURIComponent(request)); $.post(domainUrl + request, "", function (e) { document.getElementById('nodelist').innerHTML = e; }); OpenLayers.Event.stop(e); } function parpreUrl(url, paramsObj) { for (var k in paramsObj) { url += (k + "=" + paramsObj[k] + "&"); } return url; }
如果使用Groserver.ProxyHost , 会遇到 triggerEvent未定义问题,所以使用了jqueyr的ajax代替 Geoserver.Request ,另外
public void Proce***equest(HttpContext context) { context.Response.ContentType = "text/html"; string url = ""; url = context.Request.QueryString["URL"].ToString(); url = context.Server.UrlDecode(url); 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(); context.Response.Write(lcHtml); loWebResponse.Close(); loResponseStream.Close(); }
这样就可以解决 跨域问题
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。