Proposal: IDNA Browsers Advertising Capability in User-Agent header
This is a proposal to the major browser producers supporting IDNA to advertise their IDN capabilities. One way of doing it is to include a token in the User-Agent HTTP request header. According to RFC2616, the User-Agent header is used for
“statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations.”
This will serve at least 2 purposes:
1. Allows web sites to encode anchor URLs in the native page encoding or HTML entities (&#xXXXX;) for clients that advertises IDNA support. For other clients, punycode can be used for baseline compatibility.
2. Provides IDN versioning information. There have been sprouts of discussions over the next version of Nameprep profile (or even a new IDNA, maybe even a new IDN solution). This would be a good preparation for things to come, regardless of which direction the future takes us.
Below are some examples of popular browser User-Agent strings I pulled from my logs (and my proposed addition):
Firefox: *
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4 IDN/RFC3490
Googlebot (which I believe is IDNA compliant):
Mozilla/5.0 (compatible; Googlebot/2.1;+http://www.google.com/bot.html) IDN/RFC3490
Internet Explorer 6:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) IDN/RFC3490
Opera:
Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.11 [en] IDN/RFC3490
Safari:
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.8 (KHTML, like Gecko) Safari/312.6 IDN/RFC3490
Other possibilities for advertising this capability exists, such as a custom header X-IDN-Version. The same information could possibly be exported to Javascript via the navigator.userAgent field, or some other custom Javascript API (this is more an example of what should NOT be done rather than a recommendation.)
* To achieve the result in Firefox, type this into the URL bar (in a single line):
javascript:Components.classes["@mozilla.org/preferences-service;1"].getService()
.QueryInterface(Components.interfaces.nsIPrefBranch)
.setCharPref(”general.useragent.extra.idna”,”IDNA/RFC3490″);
This should take effect immediately. Go to http://www.wannabrowser.com/ and verify that “IDNA/RFC3490” is displayed in the “HTTP User Agent” box.
Related posts:
- The Station Agent For V-day, Tiff and I caught the show at Dendy Opera Quays - simply brilliant! We thoroughly enjoyed ourselves, go...
- Advantages of User-Centric Identity In a world of increasing openness and user-centric -ness (user-centric identity, increasing user-choice, user-controlled data), how do you convince enterprises...
- Bad user - No Internet for you! I don’t have time to blog, really, but this is just too scary a thought. From this Techcrunch post: A...
- Mozilla/Firefox Vulnerability Discovered and Patched There’s a new vulnerability in Mozilla / Firefox that allows arbitrary code execution, as reported in Slashdot. You can...
- If you’re not using Mozilla/Firefox What are you, nuts? I should ask, who are you? I don’t get it, with GAPING security problems such...
Related posts brought to you by Yet Another Related Posts Plugin.