Closed Bug 784450 Opened 12 years ago Closed 11 years ago

cnet.com serves simplified mobile site to Firefox Android

Categories

(Web Compatibility :: Site Reports, defect)

ARM
Android
defect
Not set
major

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: lmandel, Assigned: karlcow)

References

()

Details

(Whiteboard: [sitewait] [serversniff] [clientsniff] [country-all])

Attachments

(2 files)

CNet serves simplified mobile content to Fennec resulting in an inferior experience when compared with the stock browser.
Component: Evangelism → Mobile
Product: Firefox for Android → Tech Evangelism
Version: Firefox 15 → unspecified
Assignee: nobody → hsteen
Severity: normal → major
Status: NEW → ASSIGNED
Whiteboard: [sitewait]
Assignee: hsteen → nobody
Status: ASSIGNED → NEW
* Firefox OS Desktop * Firefox Android lowfi Mobile * iOS hifi Mobile # Firefox OS GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: www.cnet.com User-Agent: Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0 HTTP/1.1 200 OK Cache-Control: max-age=120 Connection: keep-alive Content-Encoding: gzip Content-Language: en-US Content-Length: 19686 Content-Type: text/html; charset=UTF-8 Date: Fri, 22 Nov 2013 18:01:27 GMT Expires: Fri, 22 Nov 2013 18:02:39 GMT P3P: CP="CAO DSP COR CURa ADMa DEVa PSAa PSDa IVAi IVDi CONi OUR OTRi IND PHY ONL UNI FIN COM NAV INT DEM STA" RUM_MAD_SESSION: c Set-Cookie: mad4=c; Domain=.cnet.com; Path=/; Set-Cookie: tempSessionId=Cg5gqFKPm/dCz9BmOGg; domain=.cnet.com; path=/; expires=Mon, 20-Nov-2023 18:01:27 GMT Set-Cookie: arrowLat=1385143287804; domain=.cnet.com; path=/; expires=Sat, 22-Nov-2014 18:01:27 GMT Set-Cookie: arrowSpc=1; domain=.cnet.com; path=/; expires=Sun, 22-Dec-2013 18:01:27 GMT Set-Cookie: bkGeo=can; domain=.cnet.com; path=/ Set-Cookie: arrowFdCounter=1; domain=.cnet.com; path=/; expires=Fri, 22-Nov-2013 19:01:27 GMT Set-Cookie: wsFd=true; domain=.cnet.com; path=/; expires=Sun, 22-Dec-2013 18:01:27 GMT Vary: X-Purpose Vary: Accept-Encoding # Firefox Android GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: www.cnet.com User-Agent: Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0 HTTP/1.1 301 Moved Permanently Cache-Control: max-age=0, no-cache, no-store Connection: keep-alive Connection: Transfer-Encoding Content-Type: text/html; charset=iso-8859-1 Date: Fri, 22 Nov 2013 18:02:36 GMT Expires: Thu, 01 Jan 1970 00:00:00 GMT Location: http://m.cnet.com Server: Apache Transfer-Encoding: chunked Vary: Accept-Encoding GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: m.cnet.com User-Agent: Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0 HTTP/1.1 200 OK Connection: keep-alive Content-Encoding: gzip Content-Type: text/html; charset=utf-8 Date: Fri, 22 Nov 2013 18:03:31 GMT Server: nginx/1.2.0 Set-Cookie: grd=m1%2C%2C%2C; path=/; expires=Fri, 29 Nov 2013 18:03:31 GMT X-Powered-By: Express transfer-encoding: chunked # iOS GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: www.cnet.com User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 HTTP/1.1 301 Moved Permanently Cache-Control: max-age=0, no-cache, no-store Connection: keep-alive Connection: Transfer-Encoding Content-Type: text/html; charset=iso-8859-1 Date: Fri, 22 Nov 2013 18:03:11 GMT Expires: Thu, 01 Jan 1970 00:00:00 GMT Location: http://m.cnet.com Server: Apache Transfer-Encoding: chunked Vary: Accept-Encoding GET / HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: m.cnet.com User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 HTTP/1.1 200 OK Cache-Control: no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0 Connection: keep-alive Content-Encoding: gzip Content-Length: 1043 Content-Type: text/html; charset=utf-8 Date: Fri, 22 Nov 2013 18:03:59 GMT Server: nginx/1.2.0 X-Powered-By: Express The http://m.cnet.com is in fact * the JS calling the page with xhr when accessed with iOS User Agent or Android Stock Browser (see the markup below) For example, d: "iphone" d: "android" * the lowfi content with iOS. So basically there are multiple level of detection. :) The markup ========================= <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> <meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> <title>CNET</title> <script>var noCookie = false; function noCookies() { //alert("no cookie"); if (noCookie) {document.getElementById("nck").style.display = "block";} } </script> </head> <body onload="noCookies()" style="background: #fff;padding: 1em;"> <noscript> <p style="color: #900">Oh no! It looks like you don't have JavaScript enabled in your browser.</p> <p>You may have a better experience if you enable JavaScript.</p> <a href="/?ds=njs">Click here to continue</a> </noscript> <div id="nck" style="display:none"> <p style="color: #900">Oh no! It looks like you don't have cookies enabled in your browser.</p> <p>Enabling cookies will make for a better experience.</p> <a href="/?ds=nc">Click here to continue</a> </div> <script type="text/javascript">(function(){ var a = navigator.userAgent.toLowerCase(), dateNow = (new Date()).getTime(), exp = new Date(dateNow + 86400000), ckval = "", url = "/".indexOf("ds=1") >= 0 ? "/" : "/?ds=1", jsonO = null, xhr = null; try {xhr = XMLHttpRequest;} catch(e){xhr = null;} try {jsonO = JSON;} catch(e){jsonO = null;} var o = { d: "iphone", j: jsonO && typeof jsonO.parse === "function" ? 1 : 0, x: xhr !== null ? 1 : 0, q: typeof document.querySelectorAll === "function" && typeof document.querySelector === "function" ? 1 : 0, t: "ontouchstart" in window ? 1 : 0, hh: "onhashchange" in window ? 1 : 0, p: window.devicePixelRatio || null, w: screen.width, h: screen.height }; for (var q in o) { ckval += q + ":" + o[q] + ","; } ckval = ckval.slice(0, -1); document.cookie = "p=" + encodeURIComponent(ckval) + "; expires=" + exp; if(!document.cookie) { window.noCookie = true; } else { setTimeout(function(){ window.location.replace(url);}, 100); } })(); </script> </body></html>
Whiteboard: [sitewait] → [sitewait]
Ah no. Not an xhr call but a redirection to /?ds=1 Let's see GET /?ds=1 HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate, compress Host: m.cnet.com User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 HTTP/1.1 200 OK Connection: keep-alive Content-Encoding: gzip Content-Length: 5294 Content-Type: text/html; charset=utf-8 Date: Fri, 22 Nov 2013 18:18:38 GMT Server: nginx/1.2.0 X-Powered-By: Express <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"><html><head><head><title>Home - CNET Mobile</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="canonical" href="http://www.cnet.com/"/><script>var __pageParams__ = { sid: '1', siteid: '1', edid: '4163', prtnr: 'CNET Networks, Inc.', ptid: '2000', onid: '1', asid: '0', astId: '1', astid: '1', pgnbr: '1', title: '', testname: '', testversion: '', testgroup: '', networkId: '8264' }; […] etc.
Assignee: nobody → kdubost
Whiteboard: [sitewait] → [sitewait] [serversniff] [clientsniff] [country-all]
The person in charge of Platform Infrastructure at CBS Interactive was contacted on 2013-11-22.
Status: NEW → ASSIGNED
So things changed a bit. Now the Web site stays on http://www.cnet.com/ When a mobile is postively identified there is a cookie: "fly_device" set to "mobile" identified as mobile. * Chrome Mobile * Firefox Android * Firefox OS → http --print=Hh GET http://www.cnet.com/ "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53" | grep fly_device Set-Cookie: fly_device=mobile; expires=Thu, 10-Apr-2014 07:15:31 GMT; path=/; domain=.cnet.com → http --print=Hh GET http://www.cnet.com/ "User-Agent: Mozilla/5.0 (Android; Mobile; rv:18.0) Gecko/18.0 Firefox/18.0" | grep fly_device Set-Cookie: fly_device=mobile; expires=Thu, 10-Apr-2014 07:15:50 GMT; path=/; domain=.cnet.com → http --print=Hh GET http://www.cnet.com/ "User-Agent: Mozilla/5.0 (Mobile; rv:18.0) Gecko/18.0 Firefox/18.0" | grep fly_device Set-Cookie: fly_device=mobile; expires=Thu, 10-Apr-2014 07:16:01 GMT; path=/; domain=.cnet.com FIXED!
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Summary: cnet.com serves simplified mobile site to Fennec → cnet.com serves simplified mobile site to Firefox Android
See Also: → 1140727
Product: Tech Evangelism → Web Compatibility
Component: Mobile → Site Reports
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: