Difference between revisions of "JGridstart/Java user agents"
(add user agent note) |
(add template) |
||
Line 1: | Line 1: | ||
+ | {{JGridstart}} | ||
It is possible to detect on the server-side something about the user's Java environment by inspecting the request headers that Java sends. There are differences when a connection is made from the Java program using [http://java.sun.com/javase/6/docs/api/java/net/URLConnection.html URLConnection], or when a [http://en.wikipedia.org/wiki/Java_web_start Java Web Start] application is being downloaded. | It is possible to detect on the server-side something about the user's Java environment by inspecting the request headers that Java sends. There are differences when a connection is made from the Java program using [http://java.sun.com/javase/6/docs/api/java/net/URLConnection.html URLConnection], or when a [http://en.wikipedia.org/wiki/Java_web_start Java Web Start] application is being downloaded. | ||
Latest revision as of 12:39, 29 March 2012
<sidebar>
- jGridstart
- JGridstart|Home
- JGridstart/Help|Help
- JGridstart/Support|Support
- jGridstart for ...
- JGridstart/Certificate_Authorities|Certificate Authorities
- JGridstart/Developers|Developers
</sidebar> It is possible to detect on the server-side something about the user's Java environment by inspecting the request headers that Java sends. There are differences when a connection is made from the Java program using URLConnection, or when a Java Web Start application is being downloaded.
Java Web Start
Vendor | HTTP Header | |
---|---|---|
User-Agent | UA-Java-Version | |
Sun | JNLP/1.5 javaws/1.5.0_19 (b02) J2SE/1.5.0_19 | 1.5.0_19 |
Sun | JNLP/6.0 javaws/1.6.0_17 (b04) Java/1.6.0_17 | 1.6.0_17 |
OpenJDK | Java/1.6.0_0 | (not supplied) |
URLConnection
Vendor | HTTP header User-Agent |
---|---|
Sun | Java/1.5.0_19 |
Sun | Java/1.6.0_17 |
OpenJDK | Java/1.6.0_0 |
Setting the user-agent from Java
jGridstart sets the user-agent so that it can be recognised by the web server, including its version number. This is done by setting the system property http.agent (Java still appends something like Java/1.6.0_10 to it).
There is a little problem with java web start. When the system property http.agent is set from within a java web start application, it is not actually used when a http connection is made. This can be remedied by either setting the property from the JNLP file, or by setting the request property User-Agent on the URLConnection. jGridstart uses this as a workaround:
static URLConnection URLopenConnection(URL url) throws IOException {
URLConnection conn = url.openConnection();
if (conn instanceof HttpURLConnection) {
String agent = System.getProperty("http.agent") +
" Java/"+System.getProperty("java.version");
if (agent != null)
((HttpURLConnection)conn).setRequestProperty("User-Agent", agent);
}
return conn;
}
See also specifics under Java Web Start.