.net 访问 geoserver 发布的 wms 跨域问题解决方案
环境: 服务器 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 secsloHttp.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();}
这样就可以解决 跨域问题
转载于:https://blog.51cto.com/hb407033/1433902
.net 访问 geoserver 发布的 wms 跨域问题解决方案相关推荐
- 解决Axios跨域问题(Axios跨域问题解决方案)
问题背景 Axios是不允许跨域访问的,别说跨域,跨端口都不行.例如某项目我本地vue前端frontEnd为localhost:8889,Java后台 backEnd为localhost:8888 报 ...
- leaflet 加载 geoserver 发布的 wms 服务
1. 安装 geoserver 服务:略 2. 启动 geoserver: 3. 登录 geoserver 控制台:( 默认账号.密码为 admin.geoserver ) 4. 新建工作区: 5. ...
- 在云服务器上注意GeoServer和ShadowDataMap的跨域设置
在云服务器上注意GeoServer和ShadowDataMap的跨域设置 1.对于支持cors的网络资源 可以在ShadowDataMap的devserverconfig.json里设置相应的跨域资源 ...
- 一键部署开箱即用的代理服务器,解决 SAP UI5 应用开发过程中访问远端 OData 服务的跨域问题试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- geoserver安装及跨域问题解决方案
下载geoserver安装包 GeoServer-geoserver-2.18.0-bin.zip 链接:https://pan.baidu.com/s/11IhKO3l84An-H0wt-mqZgw ...
- SAP UI5 初学者教程之二十五 - 使用代理服务器解决 SAP UI5 应用访问远端 OData 服务的跨域问题试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 ...
- mapbox 添加geoserver发布的wms服务及wms服务属性查询
<!DOCTYPE html> <html><head><meta charset='utf-8' /><title>mapbox 添加 g ...
- html的页面怎样直接跨域访问,【HTML】iframe跨域访问问题
概述 本地同一浏览器访问本地HTML文件和访问服务器端HTML文件,本地Iframe没有自适应高度,而服务器端的Ifrane自适应了高度. 1.问题重现: Chrome 版本 41.0.2272.10 ...
- Cesium加载geoserver发布的wms地图服务-设置BBOX参数无效
一.问题描述: 地图服务是geoserver发布的wms地图服务,使用cesium加载渲染,加载代码如下. // Cesium加载wms var wms = new Cesium.WebMapServ ...
最新文章
- beego 获取字符串中的数据_MySQL中获取季度、年度等数据
- 听说微软出了个 Windows XP reStart Edition? 重启版?
- 联想发布首款自研工业机器人,用5G技术给国产大飞机喷漆
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- 信息系统项目管理师-人力资源管理知识点
- asp.net 异步群发邮件时遭遇到的问题 ddddddddd
- linux mysql多主一从_linux中mysql多主一从热备份
- iOS根据经纬度获得地理名称
- CppUnit源代码分析总结
- ORACLE sid,pid,spid总结
- 社交网络上的影响传播模型
- php?what=chinese,推荐4-ChineseUtil v1.1.2 发布,PHP 中文工具包
- Python调用IDM批量下载GOCI数据
- 183名中国学者入选2016全球高引作者榜 | 数据分析
- excel中实现多条件去重计数
- ES6模板字符串if语句判断
- linux驱动之输入子系统
- python导入wx_Python“导入wx”
- 解决出租屋网络故障的步骤及最佳组网方案
- Linux中fork函数详解