Hi,

Within the Mobile Web Best Practices Working Group, the Content Transformation Task Force is writing guidelines [1] for content transformation proxies and content providers to be able to communicate their intentions regarding a given HTTP message.

It occurred to us that from a proxy's point of view (note it also applies from a server's point of view, but that's not the point here), there is no way to tell whether a given HTTP request originates from the browser itself or from an XHR object.

In the context of content transformation that is a problem because such HTTP messages should be passed untouched by the content transformation proxies: an XHR call involves that some client code will be run on receipt of the response, so any transformation is likely to break the content delivered by the device.

We initially thought that using dedicated "data" content-types (such as application/json) would solve the problem, but then it's typically common and valid to fetch an XHTML page using an XHR object for display purposes.

Still from a content transformation's point of view, we've solved the problem by recommending that content providers include a "Cache-Control: no-transform" directive in the HTTP headers of XHR calls to "switch off" the proxy when they don't want the message to be transformed in any way. This still means that content providers have to update their content for this to work, but that's another story.

We were wondering if that use case would not meet other similar use cases in other areas that would require an easy way to tell that a request originates from an XHR object. Possible solutions:
        1. amending the User-Agent string to include an "XHR"-like string 
somewhere
        2. defining an additional header such as "X-Ajax-Engine" [2]
        ... and hopefully better solutions we haven't thought about.

Is there a reason for not willing to distinguish between a browser request and an XHR call from within the browser? Did we get something wrong and is it already possible to know a request originates from an XHR object?
Is it something that you think could be worth considering?

On behalf of the Content Transformation Task Force,
François Daoust, BPWG Staff Contact.

[1] http://www.w3.org/TR/ct-guidelines
[2] http://www.dev411.com/blog/2006/06/30/should-there-be-a-xmlhttprequest-user-agent

Reply via email to