Package sunlabs.brazil.proxy
Class CookieFilter
java.lang.Object
sunlabs.brazil.proxy.CookieFilter
The
CookieFilter
keeps a
record of all the browser cookies associated with a given session.
This can be
used to make the user's cookies "mobile" as follows. A user's cookies
are normally stored with the browser being used, on the user's machine.
If the user runs a different browser or goes to a different machine, the
user's cookies will not be there. Instead, the user can access the web
via a proxy that keeps all their cookies. No matter which browser the
user chooses or machine the user is at, a proxy running with the
CookieFilter
will automatically remember and add in their
appropriate cookies. The CookieFilter
also supports
multiple, concurrent users, keeping each user's cookies separate.
- All "Set-Cookie" HTTP response headers are filtered out and saved in the local storage. "Set-Cookie" headers are not transmitted back to the client.
- Requests from the client have the appropriate "Cookie" headers added.
- Users can retrieve, edit, and delete their own cookies.
- JavaScript code that sets cookies is not handled by this
filter, since the code only runs on the client computer, not on the proxy.
For instance:
document.cookie = "userid=778287312"
. Any and all Javascript is passed unchanged by this filter. - This filter works in both a session-based and a non-session-based
fashion. If sessions are used, cookies are kept with respect to the
session associated with a user. If sessions are not used, all cookies
are kept in one pile for all users. The latter case is valid if, say,
only one user is using the proxy running the
CookieFilter
.
- session
- The request property to find the session id. Defaults to "SessionID"
- nosession
- The name of the session to use if no session id is found. defaults to "common".
- admin
- A URL prefix that causes status information to be placed in the request properties.
- Version:
- 2.5
- Author:
- Stephen Uhler (stephen.uhler@sun.com), Colin Stevens (colin.stevens@sun.com)
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
filter
(Request request, MimeHeaders headers, byte[] content) Returns the original content, since this filter does not change content; it changes the headers.boolean
Initializes the handler.boolean
Responds to an HTTP request.boolean
shouldFilter
(Request request, MimeHeaders headers) Saves all "Set-Cookie" headers from the target in the client's local storage, then removes those headers before allowing the response to go back to the client.
-
Field Details
-
session
-
nosession
-
admin
-
-
Constructor Details
-
CookieFilter
public CookieFilter()
-
-
Method Details
-
init
Description copied from interface:Handler
Initializes the handler.- Specified by:
init
in interfaceHandler
- Parameters:
server
- The HTTP server that created thisHandler
. TypicalHandler
s will useServer.props
to obtain run-time configuration information.prefix
- The handlers name. The string thisHandler
may prepend to all of the keys that it uses to extract configuration information fromServer.props
. This is set (by theServer
andChainHandler
) to help avoid configuration parameter namespace collisions.- Returns:
true
if thisHandler
initialized successfully,false
otherwise. Iffalse
is returned, thisHandler
should not be used.
-
respond
Description copied from interface:Handler
Responds to an HTTP request.- Specified by:
respond
in interfaceHandler
- Parameters:
request
- TheRequest
object that represents the HTTP request.- Returns:
true
if the request was handled. A request was handled if a response was supplied to the client, typically by callingRequest.sendResponse()
orRequest.sendError
.- Throws:
IOException
- if there was an I/O error while sending the response to the client. Typically, in that case, theServer
will (try to) send an error message to the client and then close the client's connection.The
IOException
should not be used to silently ignore problems such as being unable to access some server-side resource (for example getting aFileNotFoundException
due to not being able to open a file). In that case, theHandler
's duty is to turn thatIOException
into a HTTP response indicating, in this case, that a file could not be found.
-
shouldFilter
Saves all "Set-Cookie" headers from the target in the client's local storage, then removes those headers before allowing the response to go back to the client. The client never sees cookies on their local machine.- Specified by:
shouldFilter
in interfaceFilter
- Parameters:
request
- The in-progress HTTP request.headers
- The MIME headers generated by the wrappedHandler
.- Returns:
true
if this filter would like to examine and possibly rewrite the content,false
otherwise.
-
filter
Returns the original content, since this filter does not change content; it changes the headers.- Specified by:
filter
in interfaceFilter
- Parameters:
request
- The finished HTTP request.headers
- The MIME headers generated by theHandler
.content
- The output from theHandler
that thisFilter
may rewrite.- Returns:
- The rewritten content. The
Filter
may return the originalcontent
unchanged. TheFilter
may returnnull
to indicate that theFilterHandler
should stop processing the request and should not return any content to the client.
-