IObjectWithSite
is a generic interface the provides an option for the application that host the object implementing the interface to supply additional host interfaces. Should an object, such as IE addon, need to request additional interfaces from the host, it can always query site COM object for additional interfaces. "Site" there is not a website, but the object that hosts the addon.
Often an object needs to communicate directly with a container site object and, in effect, manage the site object itself. Outside of IOleObject::SetClientSite, there is no generic means through which an object becomes aware of its site. IObjectWithSite provides simple objects with a simple siting mechanism (lighter than IOleObject) This interface should only be used when IOleObject is not already in use.