geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题

1、直接上代码不多bb

错误1:

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第1张图片

(我的geoserver是挂载在tomcat上的,有些网上设置的跨域是不行的,是因为有的用的geoserver是直接在jett上的,要注意搜索关键字,要说明自己geoserver是通过什么方式访问的。)

地图加载无问题,但是请求json就会出错,配置见下图。





    
    
    
    
    
    
    


geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第2张图片

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第3张图片

2、使用jsonp 

错误2:

(jsonp原理我这里稍微解释一下,它是要求服务器返回一个带有函数的json数据,比如加上参数jsonpcallback:“kk”,我要求给你数据的服务器段的格式也要有kk(json数据)给你,目的是返回的数据能直接调用js,因为js可以支持跨域请求)

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第4张图片





    
    
    
    
    
    
    


3、解决:

1)你如何要求geoserver给你一个带有函数的json数据呢?

2)或者让geoserver直接返回json。

陷入困境,只有两条路走,

1、去查相关jsonp geoserver的信息。

2、去寻找让geoserver支持直接返回json的方法。

我选择了第一个,第二个建议你看这篇文章可能有用https://www.cnblogs.com/naaoveGIS/p/8418414.html)。

上代码





    
    
    
    
    
    
    


 https://docs.geoserver.org/latest/en/user/services/wms/reference.html#wms-getfeatureinfogeoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第5张图片

还没有完又出现了新的错误?

 
      Invalid format 'text/javascript', supported formats are [text/plain, application/vnd.ogc.gml, text/xml, application/vnd.ogc.gml/3.1.1, text/xml; subtype=gml/3.1.1, text/html, application/json]

查资料显示:

(INFO_FORMAT:INFO_FORMAT参数表示返回的特征信息时使用何种格式。WMS服务器支持的GetFeatureInfo请求格式值在服务元数据中以形式列出。的整个MIME字符串值被用来表示INFO_FORMAT参数的值,而这个值没有默认值。在HTTP环境下,MIME类型应该使用内容类型实体头文件设置为返回对象。如果请求指定了一个服务器不支持的格式,服务器应该发送一个服务异常(code = ”InvalidFormat” )。)

思考?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

应该是jsoup没开吗,尝试查询相关资料,查看自己的geoserver版本 

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第6张图片

搜索相关资料,发现老外??,让爷修改web.xml

https://gis.stackexchange.com/questions/57494/geoserver-2-3-how-to-enable-jsonp

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第7张图片 爷照着办了,修改完成以后,重启,然后成功了,耗时8个小时,?

总结:复制以上代码,然后找到geoserver web.xml修改以上图片,把注释改掉,然后重启geoserver,然后成功,要不是有个墙?就去粉他了。

解决问题全靠百度,要会搜索关键字,要有自己的想法思路,在各种情况下,给自己列出解决路线,不说了感谢百度,感谢csdn,感谢stackexchange歪果仁,如果这篇文章帮助到你,请您粉?,顺便给个赞?。

geoserver Openlayers4 关于wms,jsonp、地图服务、GetFeatureInfo查询服务跨域请求的各种问题_第8张图片

也要感谢这位朋友 https://blog.csdn.net/weixin_40184249

你可能感兴趣的:(gis)