Search the FirstSpirit Knowledge Base
Hallo Community,
wir haben mit einem unserer Partner ein Problem festgestellt wenn FirstSpirit via iptables (wie in der knowledge base beschrieben) auf Port 80 erreichbar ist.
Der Java-Client lässt sich dann auf manchen Rechnern nicht starten, es erscheint folgende Fehlermeldung:
java.io.IOException: Server returned HTTP response code: 403 for URL: http://example.org/fs-client.jar
at sun.reflect.GeneratedConstructorAccessor2.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequestEX(Unknown Source)
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
at com.sun.deploy.net.DownloadEngine.isUpdateAvailable(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://example.org/fs-client.jar
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
... 13 more
Wir haben mittels Paketanalyse folgende Header analysiert:
REQUEST
GET /fs-client.jar HTTP/1.1
content-type: application/x-java-archive
accept-encoding: pack200-gzip,gzip
User-Agent: JNLP/6.0 javaws/1.6.0_19 (b04) Java/1.6.0_19
UA-Java-Version: 1.6.0_19
Host: example.org
Cache-Control: no-cache
Pragma: no-cache
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
If-Modified-Since: Tue, 18 May 2010 06:57:47 GMT
RESPONSE
HTTP/1.0 403 Forbidden
Content-Type: text/html
Connection: close
Content-Length: 353
<HTML><HEAD>
<TITLE>ERROR: Access Denied</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
<H2>Access Denied</H2>
<HR>
<UL>
<LI>
<STRONG>
Access Denied by security policy
</STRONG>
</UL>
<P>
The security policy for your network prevents your request from
being allowed at this time. Please contact your administrator if
you feel this is incorrect.
</BODY>
</HTML>
Nach weiteren Tests haben wir herausgefunden, dass der Request durch auslassen der Requestheaderzeile "If-Modified-Since: Tue, 18 May 2010 06:57:47 GMT" erfolgreich ohne 403 Code funktioniert und das JAR File geladen werden kann.
Wenn ein Apache auf Port 80 als Proxy eingesetzt wird, funktioniert das Starten des Clients ohne Probleme.
Hat vielleicht jemand aus der Community dieses Verhalten schon beobachten können und die Ursache entdeckt? Wir würden gerne weiterhin das port forwarding anstatt einen zusätzlichen apache verwenden falls möglich.
Hallo
um welche FirstSpirit handelt es sich? Es wird aber der interne Jetty benutzt, oder ein externer Tomcat?
Hi,
die Versionsnummer von FirstSpirit ist 4.2.219.38784 auf einem CentOS Linux 5.4. Es wird der interne Jetty (standard) eingesetzt.
Hallo,
die Fehlermeldung dürfte von einem http-Proxy zwischen Browser und FirstSpirit-Server stammen, denn der in FirstSpirit integrierte Jetty Webserver meldet normalerweise einen Error 403 folgendermassen:
FORBIDDEN
RequestURI=/clientjar/
Niklas Bulitta schrieb:
Nach weiteren Tests haben wir herausgefunden, dass der Request durch auslassen der Requestheaderzeile "If-Modified-Since: Tue, 18 May 2010 06:57:47 GMT" erfolgreich ohne 403 Code funktioniert und das JAR File geladen werden kann.
Besteht die Möglichkeit das sich ein Proxy in die Kommunikation einmischt, die Header sehen danach aus. Es spricht auch dafür das wenn Sie den " If-Modified-Since" Header entfernen, das laden des jars klappt.
Hallo zusammen,
ich möchte mich hier kurz in die Diskussion einmischen und (hoffentlich) ein paar neue Infos liefern.
Wir haben ja grundsätzlich hier bei HLP das identische Problem.
Derzeit versuche ich (auch aus anderen Gründen) das Problem durch Vorschaltung eines Apache Webservers zu lösen. Ich halte dies nämlich für den grundsätzlich saubereren Ansatz als das umbiegen
der Ports.
Aber zurück zum Thema.
Wir haben bis dato ja ebenfalls (über unsere Firewall) ein Port Remapping vorgenommen. Dies wurde auch durch einen Proxy erledigt. Ich kann und werde mal zum testen (wenn mein Kollege aus dem Urlaub zurück ist bzw. ich jemanden zum testen finde) den Proxy in der Firewall durch einen reinen Paketfilter ersetzen (das ist dann reines IPTABLES).
Da aber Herr Bulitta bereits sagte, dass bei ihm der Fehler auch mit IPTABLES auftritt habe ich hier keine große Hoffnung.
Grüße
René
Rene Charbonneau schrieb:
Wir haben ja grundsätzlich hier bei HLP das identische Problem.
Derzeit versuche ich (auch aus anderen Gründen) das Problem durch Vorschaltung eines Apache Webservers zu lösen. Ich halte dies nämlich für den grundsätzlich saubereren Ansatz als das umbiegender Ports.
Die Konfiguration zur Verwendung des internen Jetty in Verbindung mit Apache und mod_proxy_http (statt des beim Tomcat verwendeten mod_proxy_ajp) finden Sie im Kapitel 4.5.1 "Apache HTTP-Server mit Servlet-Engine Jetty" im Handbuch ADMI4xDE_FirstSpirit_AdminDocumentation.pdf (V2.19). Das Handbuch ist im "Hilfe"-Menü des FirstSpirit-Admin-Clients abrufbar, dort unter "Index".