

This is most likely what prompted the latest RFCs to specifically say using another product’s string (i.e. Soon, practically every mainstream browser just decided to declare they were Mozilla as the first product string, while adding the actual browser in a comment or a subsequent product string. To get around this, the other browsers just declared themselves to be Mozilla to fetch the Mozilla version. So browsers that could support advanced features were not served pages with such features.
#Faux internet explorer for mac update
This was because back in the ‘90s when browser features were rapidly changing, the Mozilla browser had certain features like frames that were initially unavailable in competing browsers, so web designers sent different versions of the page based on the User-Agent.īut as the other browsers caught to Mozilla in terms of features, web designers were slow (or didn’t bother) to update their serving rules to match. While knowing what the RFCs say about User-Agent strings is useful to know the format that things take, it doesn’t tell you very much about how it is used in practice.Īs stated quite amusingly here in a “ History of the browser user-agent string”, the reality of UAs today is that practically everything pretends to be Mozilla first. In the intervening 5 years of exploding internet use, it seems they had seen some abuses that they wanted to stop. What’s interesting about all these additions is that they didn’t exist in RFC 2068 the original HTTP/1.1 spec from January 1997,or RFC 2616 dating from June 1999.

It’s also specifically stated that it’s discouraged for products to use the product tokens of other products to declare compatibility. Overly long UAs are specifically stated to potentially fingerprint users (we’ll get to this later). What’s notable is the addition of very specific prohibitions against putting non-essential, fine-grained information or advertising in the UA. It’s still product/version entries separated by spaces, with comments in parentheses. Subsequent versions of the HTTP RFCs have more standardized language, but generally, things remain the same. No advertising, no overly fine-grained detail.One product should not copy another product’s token to declare compatibility.Product tokens should be ordered most important first.Comments are allowed by enclosing them in parentheses.Product tokens are separated from one another by a space.
#Faux internet explorer for mac series
Consists of a series of “product tokens” - a product name string with an optional version number, separated by a “/”.Should be in US-ASCII (as with the whole header).That SHOULD be included in every request.The TL DR is as follows: User-agents are… Let’s take a look at how the UA was defined in the RFCs.

RFC 7540-HTTP/2 is concerned w/ the HTTP message itself and not the headers where UA lives, so 7231 applies there too. This is codified within both RFC 1945-HTTP/1.0 and the current RFC 7231-HTTP/1.1 specifications (see the images below for the specific sections). The User-Agent (UA) is a field in the HTTP header that the client “should” (in the technical RFC 2219 sense where they may be technical ramifications if it is not done), include the field with a request to a server. It’s included with every HTTP request and can potentially be very long and unique to a user in certain uncommon situations.īut what IS this string all about, and why is it sorta crazy any of this works? So what’s a User-Agent string? User-Agents also provides one of the data points for fingerprinting users without the use of cookies. Even Javascript device detection libraries often just request and parse the User-Agent. It’s not the only way someone can do device detection, but it forms a very important foundation. If we’re supposed to be using this thing to count and analyze users somehow, we need to understand it some more.Ĭurrently in 2019, the most import ant use for it is figuring out what device (desktop, phone, etc) a client is using for the purposes of sending the correct page design to the client. It’s this string that we get from users, and it’s supposed to tell us various things about them.

Work in web analytics for any amount of time, even less than a week I’d bet, and you’re going to hear about this thing called the “User-Agent”.
