Mehr

WFS über Geoserver - Proxy- oder MapDocument-Probleme?


Ich habe Schwierigkeiten, ein WFS-Overlay vom Geoserver zum Laufen zu bringen. Ich denke, ich erfülle alle Anforderungen, damit das WFS in meiner Map angezeigt wird, aber die Anfrage scheint irgendwo hängen zu bleiben… FireBug gibt die Fehlermeldung aus:

Zugriff auf eingeschränkte URI verweigert" Code: "1012 http://www.openlayers.org/api/OpenLayers.js Line 1188

während Zeile 1188 Folgendes enthält:

this._object.send(vData);if(bGecko&&!this._async){this.readyState=cXMLHttpRequest.OPENED; fSynchronizeValues(this)while(this.readyState

Die gesamten Anwendungen laufen auf localhost, ich habe Apache Webserver installiert und einen Proxy konfiguriert, da dies in den meisten Threads zu WFS auf localhost empfohlen wurde. Ich habe die proxy.cgi von http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi verwendet und den Zugriff für 'localhost','localhost:80' und 'localhost:8080'sames zugelassen mit meiner IP (IP, IP:80, IP:8080).

Wenn ich localhost/cgi-bin/proxy.cgi besuche, sehe ich die OpenLayers-Seite, damit sollte es funktionieren! Meine WFS-Variable sieht so aus:

var wfs = new OpenLayers.Layer.Vector("WFS", { Strategien: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.WFS({ version: "1.1.0", URL: "http ://localhost:8080/geoserver/wfs", featurePrefix: "workspacename", featureType: "layername", featureNS: "http://lvr", [viele versucht, es muss keine vorhandene URL sein, oder? ] srsName: "EPSG:4326", GeometrieName: "the_geom" }) });

dann setze ich

OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

Ist das vollständig und wo füge ich es im Kartendokument ein? Kann jemand helfen? Ich habe viele Optionen ausprobiert, nichts hat wirklich geholfen, aber es scheint eher ein Verbindungs- / Sicherheitsproblem zu sein als etwas, das mit dem Map-Skript selbst zusammenhängt ... Brauche ich unbedingt eine Formatvariable, einen Schemaspeicherort oder eine Stylemap? Fehlt sonst noch etwas Wichtiges?


Update aus Kommentaren:

Ich kann es öffnen und tippen localhost:8080/map.html… Und als ich das gerade tat, tauchten die WFS-Daten auf!

Ich kann es nicht glauben - ich habe nur falsch auf den HTML-Code zugegriffen?! Anfängerfehler. Danke geographika…


Eine schnelle Lösung, die die Notwendigkeit von Proxys beim Testen vermeidet, besteht darin, Ihre Webseiten in das www-Verzeichnis Ihres GeoServer-Datenverzeichnisses zu legen. Die Seite wird dann über denselben Port und Host wie Ihr WFS bereitgestellt und alles funktioniert einwandfrei.

Letztendlich benötigen Sie einen Proxy, wenn (und nur wenn) Sie die Webseiten an einen anderen Ort verschieben.


Der Fehler weist auf ein domänenübergreifendes Problem hin.

Wie greifen Sie auf Ihre Website zu? Über http://localhost:80 oder http://localhost:8080? Und wo wird Ihr Proxy gehostet? Es sollte dem Standort und dem Port Ihrer Site entsprechen.

Sie sagen, dass Sie die Anwendung lokal ausführen, aber Ihre FireBug-Nachricht impliziert, dass Sie das OpenLayers-Javascript verwenden, das unter http://www.openlayers.org/api/OpenLayers.js gehostet wird

Die Alternative besteht darin, die JavaScript- und CSS-Dateien selbst von http://openlayers.org/download/ herunterzuladen und zu hosten.

Dies sollte jedoch keinen Unterschied machen.


Schau das Video: Web Features Service WFS crash course. GeoServer with Leaflet. Tekson (Oktober 2021).