The image shows a simple PHP test page (refer to the source below) that prints out user agent strings as seen from different points.
This is Internet Explorer’s user agent with token ‘chromeframe/X.X.X.X’ appended in the ‘post platform’ section. Where the X.X.X.X is the version of Chrome Frame.
Note: Chrome Frame works hard to make sure that the UA token is present consistently, however, sometimes it does not have complete control over where the token will end up in the UA string. So in rare cases the UA might look like:
When a page is loaded in Chrome Frame, it loads sub resource requests like images or sub frames using Chrome’s user agent. A chrome frame token is also appended in this UA to allow distinction between Chrome Frame requests from Chrome requests.
Sending Chrome’s UA for sub resource requests allows pages with third party content work correctly. Third party content that is not aware of Chrome Frame sees this as a Chrome requests and will serve correct flavor of content.
To the script on the page, Chrome Frame appears exactly like Chrome. Well, it is running inside a first class sandboxed Chrome renderer.
The best way to detect if the content is running inside Chrome Frame is to check for the existence of