2014-01-29 68 views
1

我有我的Geoserver在Tomcat上運行,地址爲http://localhost:8888,我有一個運行在Tomcat上的JSP應用程序,地址http://localhost:8080帶有OpenLayers API。Tomcat中的Geoserver跨域

我需要用的OpenLayers WFS請求GEOSERVER是在Tomcat的端口8888託管, 因爲我的應用程序是在端口8080

其可能的化妝跨域請求?因爲我的請求被Geoserver拒絕。

回答

1

是的,有可能跨地域請求geoserver。但是,您需要擁有或編寫代理腳本或服務。在舊版Geoserver中有一個代理服務。但是這對你並不會有所幫助,因爲你需要在正在運行的應用程序所在的同一個tomcat實例中運行需要訪問跨域的服務。

你可以使用一個jsp腳本來做你需要的。我在過去使用過一個類似於this的產品。請注意,這種代理腳本具有安全隱患。給出的示例沒有任何安全防範措施,並且可以由熟練的黑客用來對您的網站執行腳本攻擊。如果這將成爲生產服務器或公共互聯網,請使用一些過濾器來限制代理腳本可訪問的位置和位置。

爲了使用此腳本,您需要修改jsp應用程序查找geoserver應用程序的位置並進行更改。因此不是

String Geoserver_Address = "http://localhost:8888/geoserver/ows" 

你會把

String Geoserver_Address = "http://localhost:8080/Application/ProxyScript.jsp?http://localhost:8888/geoserver/ows 

這也是值得注意的是,它不是利用Geoserver導致跨域限制,但內置於大多數瀏覽器安全功能。嘗試從跨域加載代碼或不支持的格式時遇到相當普遍的問題。有關更多信息,請參閱herehere

+0

當我通過[代理腳本]運行我的OpenLayers應用 (http://snipplr.com/view/17987/jsp-proxy-for-javascript-applications)
腳本returnthis錯誤 服務器返回的HTTP響應代碼爲400:URL:http:// localhost:8888/geoserver/ibipora/wms&LAYERS = ibipora%3ALOTES_PGV&FORMAT = image%2Fpng&TILED = true&TRANSPARENT = TRUE&TILESORIGIN = 490377.25%2C7419894.5&SERVICE = WMS&VERSION = 1.1.1&REQUEST = GetMap&STYLES =&SRS = EPSG%3A31982&BBOX = 502609.21875,7407662.53125,514841.1875,7419894.5&WIDTH = 256&HEIGHT = 256 – Costa

+0

看起來像你的網址沒有正確配置,你將需要一個像這樣的URL:http:// localhost:8888/geoserver/ibipora/wms ?LAYERS =伊比波朗%3ALOTES_PGV&FORM AT = image%2Fpng&TILED = true&TRANSPARENT = TRUE&TILESORIGIN = 490377.25%2C7419894.5&SERVICE = WMS&VERSION = 1.1.1&REQUEST = GetMap&STYLES =&SRS = EPSG%3A31982&BBOX = 502609.21875,7407662.53125,514841.1875,7419894.5&WIDTH = 256&HEIGHT = 256請注意?之後wms。 – Darkcylde