cross-origin request API exposed to plugins. The Gazelle
browser [14] goes a step further by restricting the cross-
origin request API for the entire rendering engine. Under
the Gazelle approach, a web application's state is only vis-
ible to the rendering engine containing it. This prevents a
malicious web entity from compromising its own rendering
engine to gain access to the state of other web applications.
However, because Gazelle denies rendering engines from
requesting cross-origin resources unless their MIME type
indicates a library format such as JavaScript or Cascading
Style Sheets (CSS), it imposes a compatibility cost on many
web sites [15].
One approach that can mitigate the compatibility costs of
restricting the cross-origin request API is to allow an appli-
cation to explicitly declare the URLs that compose it. One
example of this approach is the Tahoma browser [16], which
allows applications to specify a manifest le listing which
URLs should be included in the same protection domain.
Tahoma uses a separate state container for each application,
so state associated with one application will be inaccessible
in another. Although Tahoma realized the importance of iso-
lating web application state, it did not incorporate the other
benet of using multiple browsers: restricting non-sensitive
web sites from directing the user to a sensitive URL.