HTTP

From BC$ MobileTV Wiki
Revision as of 20:25, 13 June 2022 by Bcmoney (Talk | contribs)

Jump to: navigation, search

HyperText Transfer Protocol (commonly abbreviated as HTTP) is the underlying protocol that drives the majority of communications on the World Wide Web.



Standards

HTTP 1.x

HTTP 2.x

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]

HTTP 3.x

[17] [18] [19] [20] [21]


HTTP Header

[22] [23] [24]

User Agent

User Agent strings are snippets of information that provide some basic identifying data about the Device, Operating System (OS) and/or Browser type and versions. This information is used by Browsers (or Native App webviews) when connecting from their client to respective Web Servers when making requests for content; many advanced websites/webapps then use this information to dynamically adjust features based on the capabilities of the particular Device/OS/Browser combination, which is known as "Browser Detection".

[25] [26] (RDF-based spec for describing "Mobile Device capabilities") [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53]

Client-Hints

"Client-Hints" is a proposal from Google that at this point is quite likely to be rolled out to actual Device/OS/Browser combinations on Android (for Mobile Devices/Tablets in 2023), Chromebooks (also (2023), and even sooner within their Chrome web browser (as early as 2022), for the purpose of limiting identifiable/fingerprint-able data about a given client and its user(s). It allows clients to advertise information about itself through these fields so the server can determine which resources should be included in its response. As an abstract example, the server might indicate in an Accept-CH response header of an initial request that it can accept device pixel ratio information from the client. The client will then make future requests using a header field containing these details, and the server will respond with images appropriate for that device pixel ratio.

Before the "Client-Hints" change is made, a standard Google/Android device's User-Agent string would look like the following:

User-Agent: Mozilla/5.0 (Linux; Android 12; Pixel 6 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.74 Mobile Safari/537.36

After the "Client-Hints" change is made, all Google/Android devices will now give a generic User-Agent header like:

User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36

Along with additional HTTP Headers such as:

Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"
Sec-CH-UA: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"

It would be one thing if they were just moving this information around; however, they are not. By default they will not send any "Sec-CH" headers. To request the client send back a 2nd small request indicating the Device/OS/Browser type:

Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version

Or, to force the page to stop rendering and refresh while forcing :

Critical-CH:  Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version

[54] [55]


HTTP Status Codes


Servers

Apache

Apache Web Server

lighttpd

mongoose

micro_httpd




Tools

Netstat

Use the following command to list all running network connections:

 netstat -a 


Resources


Tutorials


External Links


References

  1. HTTP2 official website: https://http2.github.io/
  2. Hypertext Transfer Protocol version 2: http://tools.ietf.org/html/draft-ietf-httpbis-http2-17
  3. HTTP/2 – A Real-World Performance Test and Analysis: https://css-tricks.com/http2-real-world-performance-test-analysis/
  4. HTTP/2 -- Frequently Asked Questions: https://http2.github.io/faq/
  5. Getting Ready For HTTP2 -- A Guide For Web Designers And Developers: https://www.smashingmagazine.com/2016/02/getting-ready-for-http2/
  6. What is HTTP/2?: https://yoast.com/what-is-http2/
  7. How to enable HTTP/2 support in Apache: https://http2.pro/doc/Apache
  8. Setting up HTTP/2 on your web server: https://www.tunetheweb.com/performance/http2/
  9. How to enable http2 on centos7: https://stackoverflow.com/questions/40720703/how-to-enable-http2-on-centos7
  10. Install Apache with mod_ssl & mod_http2 on CentOS 8 / RHEL 8: https://computingforgeeks.com/install-apache-with-ssl-http2-on-rhel-centos/
  11. Why Everyone Should Be Moving To HTTP/2: https://searchengineland.com/everyone-moving-http2-236716
  12. HTTP/2 Statistics (2015) - KeyCDN Report on HTTP/2 Distribution: https://www.keycdn.com/blog/http2-statistics (North America focused so skews heavier on HTTP/2 usage than actual worldwide stats at the time)
  13. InternetArchive -- Web Almanac (2019) Part IV, Chapter 20 - HTTP/2: https://almanac.httparchive.org/en/2019/http2 (biggest stat was 95% of all users on the web can potentially make use of HTTP/2)
  14. InternetArchive -- Web Almanac (2020) Part IV, Chapter 22 - HTTP/2: https://almanac.httparchive.org/en/2020/http2 (biggest stat was 64% of all websites' web servers were supporting HTTP/2
  15. April 2021 Web Server Survey: https://news.netcraft.com/archives/2021/04/30/april-2021-web-server-survey.html
  16. HTTP/2 .vs. HTTP/3: https://w3techs.com/technologies/comparison/ce-http2,ce-http3
  17. What is HTTP/3?: https://react-etc.net/entry/what-is-http-3
  18. The Internet changes - HTTP/3 will not use TCP anymore: https://medium.com/drill/the-internet-changes-http-3-will-not-use-tcp-anymore-427e82eeadc0
  19. HTTP/3 - the past, the present, and the future: https://blog.cloudflare.com/http3-the-past-present-and-future/
  20. HTTP 3 is Out and About!: https://laptrinhx.com/http-3-is-out-and-about-1549222830/
  21. HTTP/3 is Fast (and almost certainly PROD ready in 2022): https://requestmetrics.com/web-performance/http3-is-fast
  22. The (HTTP) headers we don't want: https://www.fastly.com/blog/headers-we-dont-want
  23. yCombinator HackerNews -- HTTP Headers we don't want discussion: https://news.ycombinator.com/item?id=17074721
  24. Preventing Malicious Request Loops: https://blog.cloudflare.com/preventing-malicious-request-loops/
  25. wikipedia: User agent
  26. wikipedia: UAProf
  27. List of User Agent strings: https://deviceatlas.com/blog/list-of-user-agent-strings
  28. User Agent listing: https://user-agents.net/devices/mobiles
  29. List of some of the most popular User Agent strings 2021: https://deviceatlas.com/blog/list-user-agent-strings-2021
  30. DeviceAtlas -- THE COMPLETE GUIDE TO USER-AGENT STRINGS: https://deviceatlas.com/sites/deviceatlas.com/files/images/DeviceAtlas_Complete_Guide_To_User_Agents 2021.pdf
  31. WhatIsMyBrowser -- Explore User Agents by Operating Platform: https://developers.whatismybrowser.com/useragents/explore/operating_platform_string/
  32. User Agents listing: https://user-agents.net/
  33. List-of-user-agents: https://github.com/tamimibrahim17/List-of-user-agents
  34. Google Dev docs -- Chrome browser - User-Agent strings: https://developer.chrome.com/docs/multidevice/user-agent/
  35. Samsung Dev docs -- Samsung Internet Browser - User-Agent string format: https://developer.samsung.com/internet/user-agent-string-format.html
  36. Amazon Dev docs -- Fire TV - User Agent strings: https://developer.amazon.com/docs/fire-tv/user-agent-strings.html
  37. MozDev -- Firefox - user agent string reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox
  38. UserAgentString -- Safari - most common (legacy) UAs: http://useragentstring.com/pages/useragentstring.php?name=safari | ALL UAs
  39. Complete List of iOS User-Agent Strings: https://enterpriseios.com/wiki/Complete_List_of_iOS_User_Agent_Strings
  40. Detect Apple iPhone Model Numbers and User-Agents: https://51degrees.com/blog/detect-apple-iphone-model-numbers-and-user-agents
  41. Tech Stuff - Mobile Browser ID (User-Agent) Strings: http://www.zytrax.com/tech/web/mobile_ids.html
  42. List of mobile user-agents: http://www.codereye.com/2014/12/list-of-mobile-user-agents.html
  43. Complete List of iOS User-Agent Strings: http://www.enterpriseios.com/wiki/Complete_List_of_iOS_User_Agent_Strings
  44. wikipedia: List of iOS and iPadOS devices
  45. iOS device reference: https://iosref.com/ios (release date, first OS, max upgradable OS)
  46. Which version of iOS for which phone? Compatibility list: https://story.backmarket.com/which-version-of-ios-for-which-iphone-compatibility-list/
  47. User Agent Strings of iOS: www.webapps-online.com/online-tools/user-agent-strings/dv/operatingsystem51849/ios
  48. MyIP.ms -- Safari 10 User Agent variations: https://myip.ms/view/comp_browsers/1983/Safari_10.html
  49. Detecting iOS Version Number from User Agent using Regular Expressions: https://stackoverflow.com/questions/11171895/detecting-ios-version-number-from-user-agent-using-regular-expressions
  50. How to detect iOS 6 and all minor versions by user agent?: https://stackoverflow.com/questions/12567260/how-to-detect-ios-6-and-all-minor-versions-by-user-agent/12580745#12580745
  51. What is the iOS 5.0 user agent string?: https://stackoverflow.com/questions/7825873/what-is-the-ios-5-0-user-agent-string
  52. The latest user agents for Safari: https://www.whatismybrowser.com/guides/the-latest-user-agent/safari
  53. List of OTT user agents: https://deviceatlas.com/blog/list-ott-user-agents
  54. wikipedia: HTTP Client Hints
  55. User-Agent, Client-Hints and the Future of Device Detection: https://www.scientiamobile.com/user-agent-client-hints/
  56. WGET for Windows: https://eternallybored.org/misc/wget/
  57. Legacy WGET for Windows32 (SVN repo): http://gnuwin32.sourceforge.net/packages/wget.htm
  58. How To Improve Your Website’s Yahoo Yslow Score: http://www.elegantthemes.com/blog/tips-tricks/how-to-improve-your-websites-yahoo-yslow-score

See Also

TCP/IP | FTP | SSH | Internet | Web | Web Server | Browser Detect | Caching | Computer | Mobile Device | Mobile Phone | Tablet | Android | iOS