Ich erstelle eine auf OpenLayers basierende Kartenanwendung, die GeoServer verwendet, um Kartendaten bereitzustellen. Mein Problem besteht darin, dass ich neben den Kartenbildern, die ich über WMS anfordere, jQuery AJAX verwende, um Informationen von GeoServer abzurufen. Da GeoServer auf einem anderen Port ausgeführt wird, werden meine Anforderungen aufgrund von Cross-Site-Scripting-Sicherheitsrichtlinien in JavaScript blockiert.
Als Java-AnwendungGeoServer läuft auf Apache auf Port 8080, während meine IIS-Instanz auf Port 80 läuft. Anstatt einen Proxy zu bauen, habe ich beschlossen,Verwenden Sie die URL-Umschreibung in IIS7um dieses Problem zu beheben. Ich folgedieser Leitfaden, aber es funktioniert immer noch nicht. Hier sind meine Einstellungen für die URL-Umschreibregel:
- Stimmt mit der URL überein:
(.*)
- Zustand:
{HTTP_URL}
passend/geoserver
- Aktion: umschreiben in
http://localhost:8080/{R:1}
, Abfragezeichenfolge anhängen
Bei einer Anfrage http://localhost/geoserver/wms?QUERY_LAYERS=SanDiego:FWSA_sandiego&LAYERS=SanDiego:FWSA_sandiego&SERVICE=WMS&VERSION=1.1.1&FEATURE_COUNT=20&REQUEST=GetFeatureInfo&EXCEPTIONS=application/vnd.ogc.se_xml&BBOX=-13009123.590156,3862057.2905992,-13006066.109025,3865114.7717302&INFO_FORMAT=text/html&x=20&y=20&width=40&height=40&srs=EPSG:900913
erhalte ich jedoch nur eine 404-Fehlermeldung, obwohl die gleiche Anfrage über Port 8080 das korrekte Ergebnis zurückgibt.
Was mache ich falsch? Dank im Voraus.
Antwort1
Versuchen Sie als Bedingung {URL} statt {HTTP_URL} und stellen Sie als Aktion sicher, dass es sich um eine Weiterleitung und nicht um eine Neuschreibung handelt.
Antwort2
Nimmt dieselbe Regel die Anfrage für 8080 auf und versucht, sie endlos neu zu schreiben? Ich vermute allerdings, dass in diesem Fall ein Timeout oder ein Abfragestringlängenfehler das erwartete Ergebnis wäre und nicht ein 404.
Verwenden Sie die Ablaufverfolgung fehlgeschlagener Anfragen? Verwenden Sie Fiddler? Führen Sie eine Ablaufverfolgung von http.sys durch?