{"id":542,"date":"2017-07-07T19:58:14","date_gmt":"2017-07-07T18:58:14","guid":{"rendered":"https:\/\/code-maze.com\/?p=542"},"modified":"2023-07-07T11:27:18","modified_gmt":"2023-07-07T09:27:18","slug":"http-series-part-3","status":"publish","type":"post","link":"https:\/\/code-maze.com\/http-series-part-3\/","title":{"rendered":"HTTP &#8211; Client Identification"},"content":{"rendered":"<p>Up until now, you learned about the basic concepts and some of the architectural aspects of HTTP. This leads us to the next important subject to the HTTP: client identification.<\/p>\n<p>In this article, you&#8217;ll learn why client identification is important and how can Web servers identify you (your Web client). You will also get to see how that information is used and stored.<\/p>\n<p>This is the third part of the <a href=\"https:\/\/code-maze.com\/http-series-part-3\/\">HTTP Series<\/a>.<\/p>\n<p>In this article, you will learn more about:<\/p>\n<ul>\n<li><a href=\"#identification\">Client Identification and Why It&#8217;s Extremely Important<\/a><\/li>\n<li><a href=\"#differentwaysidentify\">Different Ways to Identify a Client<\/a><\/li>\n<li><a href=\"#headers\">HTTP Request Headers Used for Identification<\/a><\/li>\n<li><a href=\"#ipaddress\">IP Address<\/a><\/li>\n<li><a href=\"#longurls\">Long (Fat) URLs<\/a><\/li>\n<li><a href=\"#cookies\">Cookies<\/a><\/li>\n<\/ul>\n<p>First, let&#8217;s see why would websites need to identify you.<\/p>\n<h2><a id=\"identification\"><\/a>Client Identification and Why It&#8217;s Extremely Important<\/h2>\n<p>As you are most definitely aware, every website, or at least those that care enough about you and your actions, include some form of content personalization.<\/p>\n<p>What do I mean by that?<\/p>\n<p>Well, that includes suggested items if you visit an e-commerce website, or &#8220;the people you might know\/want to connect with&#8221; on social networks, recommended videos, ads that almost spookily know what you need, news articles that are relevant to you and so on.<\/p>\n<p>This effect feels like a double-edged sword. On one hand, it&#8217;s pretty nifty having personalized, custom content delivered to you. On the other hand, it can lead to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Confirmation_bias\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Confirmation bias<\/a> that can result in all kinds of stereotypes and prejudice. There is an excellent\u00a0Dilbert comic that touches upon Confirmation bias.<\/p>\n<p>Yet, how can we live without knowing how our favorite team scored last night, or what celebrities did last night?<\/p>\n<p>Either way, content personalization has become part of our daily lives we can&#8217;t and we probably don&#8217;t even want to do anything about it.<\/p>\n<p>Let&#8217;s see how the Web servers can identify you to achieve this effect.<\/p>\n<h2><a id=\"differentwaysidentify\"><\/a>Different Ways to Identify the Client<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-582\" src=\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-1024x427.jpg\" alt=\"multipass\" width=\"800\" height=\"334\" srcset=\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-1024x427.jpg 1024w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-600x250.jpg 600w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-300x125.jpg 300w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-768x320.jpg 768w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-250x104.jpg 250w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass-150x63.jpg 150w, https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/multipass.jpg 1920w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>There are several ways that a Web\u00a0server can identify you:<\/p>\n<ul>\n<li><strong>HTTP request headers<\/strong><\/li>\n<li><strong>IP address<\/strong><\/li>\n<li><strong>Long URLs<\/strong><\/li>\n<li><strong>Cookies<\/strong><\/li>\n<li><strong>Login information (authentication)<\/strong><\/li>\n<\/ul>\n<p>Let&#8217;s go through each one. HTTP authentication is described in more detail in <a href=\"https:\/\/code-maze.com\/http-series-part-4\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 4<\/a> of the <a href=\"https:\/\/code-maze.com\/http-series\/\" target=\"_blank\" rel=\"noopener noreferrer\">HTTP series<\/a>.<\/p>\n<h2><a id=\"headers\"><\/a>HTTP Request Headers Used for Identification<\/h2>\n<p>Web servers have a few ways to extract information about you directly from the <a href=\"https:\/\/code-maze.com\/the-http-reference\/#headers\" target=\"_blank\" rel=\"noopener noreferrer\">HTTP request headers<\/a>.<\/p>\n<p>Those headers are:<\/p>\n<ul>\n<li><strong>From &#8211;\u00a0<\/strong>contains users email address, if it&#8217;s provided<\/li>\n<li><strong>User-Agent &#8211;\u00a0<\/strong>contains the information about Web client<\/li>\n<li><strong>Referer &#8211;\u00a0<\/strong>contains the source user came from<\/li>\n<li><strong>Authorization &#8211;\u00a0<\/strong>contains username and password<\/li>\n<li><strong>Client-IP &#8211; <\/strong>contains the users IP address<\/li>\n<li><strong>X-Forwarded-For &#8211;\u00a0<\/strong>contains user&#8217;s IP address (when going through the <a href=\"https:\/\/code-maze.com\/http-series-part-2\/#proxyservers\" target=\"_blank\" rel=\"noopener noreferrer\">proxy server<\/a>)<\/li>\n<li><strong>Cookie &#8211;\u00a0<\/strong>contains server-generated ID label<\/li>\n<\/ul>\n<p>In theory, the\u00a0<strong>From header<\/strong> would be ideal to uniquely identify the user, but in practice, this header is rarely used due to the security concerns of email collection.<\/p>\n<p>The<strong> user-agent header<\/strong> contains information like the browser version, operating system. While this is important for customizing content, it doesn&#8217;t identify the user in a more relevant way.<\/p>\n<p>The\u00a0<strong>Referer header<\/strong> tells the server where the user is coming from. This information is used to improve the understanding of user behavior, but less so to identify it.<\/p>\n<p>While these headers provide some useful information about the client, it is not enough to personalize content in a meaningful way.<\/p>\n<p>The remaining headers offer more precise mechanisms of identification.<\/p>\n<h2><a id=\"ipaddress\"><\/a>IP Address<\/h2>\n<p>The method of client identification by IP address has been used more in the past when IP addresses weren&#8217;t so easily faked\/swapped. Although it can be used as an additional security check, it just isn&#8217;t reliable enough to be used on its own.<\/p>\n<p>Here are some of the reasons why:<\/p>\n<ul>\n<li>It <strong>describes the machine<\/strong>, not the user<\/li>\n<li><strong>NAT firewalls &#8211;\u00a0<\/strong>many ISPs (Internet service providers) use NAT firewalls to enhance security and deal with IP address shortage<\/li>\n<li><strong>Dynamic IP addresses &#8211;\u00a0<\/strong>users often get the dynamic IP address from the ISP<\/li>\n<li><strong>HTTP <a href=\"https:\/\/code-maze.com\/http-series-part-2\/#proxyservers\" target=\"_blank\" rel=\"noopener noreferrer\">proxies<\/a>\u00a0and <a href=\"https:\/\/code-maze.com\/http-series-part-2\/#gateways\" target=\"_blank\" rel=\"noopener noreferrer\">gateways<\/a>\u00a0&#8211;\u00a0<\/strong>these can hide the original IP address. Some proxies use Client-IP or X-Forwarded-For to preserve the original IP address<\/li>\n<\/ul>\n<h2><a id=\"longurls\"><\/a>Long (Fat) URLs<\/h2>\n<p>It is not that uncommon to see websites utilize URLs to improve the user experience. They add more information as the user browses the website until URLs look complicated and illegible.<\/p>\n<p>You can see what the long URL looks like by browsing the Amazon store.<br \/>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-title=\"\">https:\/\/www.amazon.com\/gp\/product\/1942788002\/ref=s9u_psimh_gw_i2?ie=UTF8&amp;fpl=fresh&amp;pd_rd_i=1942788002&amp;pd_rd_r=70BRSEN2K19345MWASF0&amp;pd_rd_w=KpLza&amp;pd_rd_wg=gTIeL&amp;pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=&amp;pf_rd_r=RWRKQXA6PBHQG52JTRW2&amp;pf_rd_t=36701&amp;pf_rd_p=1cf9d009-399c-49e1-901a-7b8786e59436&amp;pf_rd_i=desktop<\/pre><br \/>\nThere are several problems when using this approach.<\/p>\n<ul>\n<li>It&#8217;s ugly<\/li>\n<li>Not shareable<\/li>\n<li>Breaks caching<\/li>\n<li>It&#8217;s limited to that session<\/li>\n<li>Increases the load on the server<\/li>\n<\/ul>\n<h2><a id=\"cookies\"><\/a>Cookies<\/h2>\n<p>The best client identification method up to date excluding the authentication. Developed by Netscape, but now every browser supports them.<\/p>\n<p>There are two types of cookies: <strong>session cookies<\/strong> and <strong>persistent cookies<\/strong>. A session cookie is deleted upon leaving the browser, and persistent cookies are saved on disk and can last longer. For the session cookie to be treated as the persistent cookie, Max-Age or Expiry property needs to be set.<\/p>\n<p>Modern browsers like Chrome and Firefox can keep background processes working when you shut them down so you can resume where you left off. This can result in the <a href=\"https:\/\/bugs.chromium.org\/p\/chromium\/issues\/detail?id=128513\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">preservation of the session cookies<\/a>, so be careful.<\/p>\n<p>So how do the cookies work?<\/p>\n<p>Cookies contain a list of name=value pairs that server sets using <a href=\"https:\/\/code-maze.com\/the-http-reference\/#headers\" target=\"_blank\" rel=\"noopener noreferrer\">Set-Cookie or Set-Cookie2 response header<\/a>. Usually, the information stored in a cookie is some kind of client id, but some websites store other information as well.<\/p>\n<p>The browser stores this information in its cookie database and returns it when the user visits the page\/website next time. The browser can handle thousands of different cookies and it knows when to serve each one.<\/p>\n<h3>Here is an <strong>example flow<\/strong>.<\/h3>\n<p>1. User Agent -&gt; Server<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">POST \/acme\/login HTTP\/1.1\r\n[form data]<\/pre>\n<p>The user identifies itself via form input<\/p>\n<p>2. Server -&gt; User Agent<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">HTTP\/1.1 200 OK\r\nSet-Cookie2: Customer=\"WILE_E_COYOTE\"; Version=\"1\"; Path=\"\/acme\"<\/pre>\n<p>The server sends the Set-Cookie2 response header to instruct the User Agent (browser) to set the information about the user in a cookie.<\/p>\n<p>3. User Agent -&gt; Server<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">POST \/acme\/pickitem HTTP\/1.1\r\nCookie: $Version=\"1\"; Customer=\"WILE_E_COYOTE\"; $Path=\"\/acme\"\r\n[form data]<\/pre>\n<p>The user selects the item to the shop basket.<\/p>\n<p>4. Server -&gt; User Agent<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">HTTP\/1.1 200 OK\r\nSet-Cookie2: Part_Number=\"Rocket_Launcher_0001\"; Version=\"1\"; Path=\"\/acme\"<\/pre>\n<p>Shopping basket contains an item.<\/p>\n<p>5. User Agent -&gt; Server<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">POST \/acme\/shipping HTTP\/1.1\r\nCookie: $Version=\"1\"; Customer=\"WILE_E_COYOTE\"; $Path=\"\/acme\"; \r\n        Part_Number=\"Rocket_Launcher_0001\";\r\n[form data]<\/pre>\n<p>The user selects the shipping method.<\/p>\n<p>6. Server -&gt; User Agent<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">HTTP\/1.1 200 OK\r\nSet-Cookie2: Shipping=\"FedEx\"; Version=\"1\"; Path=\"\/acme\"<\/pre>\n<p>The new cookie reflects the shipping method.<\/p>\n<p>7. User Agent -&gt; Server<\/p>\n<pre  class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">POST \/acme\/process HTTP\/1.1\r\nCookie: $Version=\"1\";\r\n        Customer=\"WILE_E_COYOTE\"; $Path=\"\/acme\";\r\n        Part_Number=\"Rocket_Launcher_0001\"; $Path=\"\/acme\";\r\n        Shipping=\"FedEx\"; $Path=\"\/acme\"\r\n[form data]<\/pre>\n<p>That&#8217;s it.<\/p>\n<p>There is one more thing I want you to be aware of. The cookies are not perfect either. Besides security concerns, there is also a problem with <a href=\"https:\/\/www.infoq.com\/articles\/rest-anti-patterns\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">cookies colliding with the REST architectural style<\/a>. (The section about misusing cookies).<\/p>\n<p>You can learn more about cookies in the <a href=\"https:\/\/www.ietf.org\/rfc\/rfc2965.txt\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">RFC 2965<\/a>.<\/p>\n<h2>Conclusion<\/h2>\n<p>This wraps it up for this part of the <a href=\"https:\/\/code-maze.com\/http-series\/\" target=\"_blank\" rel=\"noopener noreferrer\">HTTP series<\/a>.<\/p>\n<p>You have learned about the strengths of content personalization as well as it&#8217;s potential pitfalls. You are also aware of the different ways that servers can use to identify you. In <a href=\"https:\/\/code-maze.com\/http-series-part-4\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 4<\/a> of the series, we will talk about the most important type of client identification: authentication.<\/p>\n<p>If you found some of the concepts in this part unclear, refer to <a href=\"https:\/\/code-maze.com\/http-protocol-overview-part1\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 1<\/a> and <a href=\"https:\/\/code-maze.com\/http-series-part-2\/\" target=\"_blank\" rel=\"noopener noreferrer\">part 2<\/a> of the <a href=\"https:\/\/code-maze.com\/http-series\/\" target=\"_blank\" rel=\"noopener noreferrer\">HTTP series<\/a>.<\/p>\n<!-- Shortcode [subscribe] does not exist -->\n","protected":false},"excerpt":{"rendered":"<p>Up until now, you learned about the basic concepts and some of the architectural aspects of HTTP. This leads us to the next important subject to the HTTP: client identification. In this article, you&#8217;ll learn why client identification is important and how can Web servers identify you (your Web client). You will also get to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":54919,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[171],"tags":[14,8],"class_list":["post-542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-http","tag-http","tag-rest","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HTTP - Client Identification - Code Maze<\/title>\n<meta name=\"description\" content=\"Let&#039;s answer the question of why the client identification is so important and how can Web servers identify you (your Web client).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/code-maze.com\/http-series-part-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HTTP - Client Identification - Code Maze\" \/>\n<meta property=\"og:description\" content=\"Let&#039;s answer the question of why the client identification is so important and how can Web servers identify you (your Web client).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/code-maze.com\/http-series-part-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Maze\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-07T18:58:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-07T09:27:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Vladimir Pecanac\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/PecanacVladimir\" \/>\n<meta name=\"twitter:site\" content=\"@CodeMazeBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vladimir Pecanac\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/\"},\"author\":{\"name\":\"Vladimir Pecanac\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/50de31ad4e1992752e972e4715d93739\"},\"headline\":\"HTTP &#8211; Client Identification\",\"datePublished\":\"2017-07-07T18:58:14+00:00\",\"dateModified\":\"2023-07-07T09:27:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/\"},\"wordCount\":1186,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png\",\"keywords\":[\"HTTP\",\"REST\"],\"articleSection\":[\"HTTP\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/code-maze.com\/http-series-part-3\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/\",\"url\":\"https:\/\/code-maze.com\/http-series-part-3\/\",\"name\":\"HTTP - Client Identification - Code Maze\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png\",\"datePublished\":\"2017-07-07T18:58:14+00:00\",\"dateModified\":\"2023-07-07T09:27:18+00:00\",\"description\":\"Let's answer the question of why the client identification is so important and how can Web servers identify you (your Web client).\",\"breadcrumb\":{\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/code-maze.com\/http-series-part-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png\",\"width\":1100,\"height\":620,\"caption\":\"http3-featured-image\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/code-maze.com\/http-series-part-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/code-maze.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HTTP &#8211; Client Identification\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/code-maze.com\/#website\",\"url\":\"https:\/\/code-maze.com\/\",\"name\":\"Code Maze\",\"description\":\"Learn. Code. Succeed.\",\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/code-maze.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/code-maze.com\/#organization\",\"name\":\"Code Maze\",\"url\":\"https:\/\/code-maze.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"width\":3511,\"height\":3510,\"caption\":\"Code Maze\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/CodeMazeBlog\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/50de31ad4e1992752e972e4715d93739\",\"name\":\"Vladimir Pecanac\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2016\/02\/profile_image-100x100.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2016\/02\/profile_image-100x100.png\",\"caption\":\"Vladimir Pecanac\"},\"description\":\"Hi, my name is Vladimir Pecanac, and I am a full-time .NET developer and DevOps enthusiast. I created this blog so I can share the things I learn in the hope of both helping others and deepening my own knowledge of the topics I write about. The best way to learn is to teach.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/vladimir-pecanac\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/PecanacVladimir\"],\"url\":\"https:\/\/code-maze.com\/author\/codemaze_blog\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HTTP - Client Identification - Code Maze","description":"Let's answer the question of why the client identification is so important and how can Web servers identify you (your Web client).","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/code-maze.com\/http-series-part-3\/","og_locale":"en_US","og_type":"article","og_title":"HTTP - Client Identification - Code Maze","og_description":"Let's answer the question of why the client identification is so important and how can Web servers identify you (your Web client).","og_url":"https:\/\/code-maze.com\/http-series-part-3\/","og_site_name":"Code Maze","article_published_time":"2017-07-07T18:58:14+00:00","article_modified_time":"2023-07-07T09:27:18+00:00","og_image":[{"width":1100,"height":620,"url":"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png","type":"image\/png"}],"author":"Vladimir Pecanac","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/PecanacVladimir","twitter_site":"@CodeMazeBlog","twitter_misc":{"Written by":"Vladimir Pecanac","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/code-maze.com\/http-series-part-3\/#article","isPartOf":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/"},"author":{"name":"Vladimir Pecanac","@id":"https:\/\/code-maze.com\/#\/schema\/person\/50de31ad4e1992752e972e4715d93739"},"headline":"HTTP &#8211; Client Identification","datePublished":"2017-07-07T18:58:14+00:00","dateModified":"2023-07-07T09:27:18+00:00","mainEntityOfPage":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/"},"wordCount":1186,"commentCount":0,"publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"image":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png","keywords":["HTTP","REST"],"articleSection":["HTTP"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/code-maze.com\/http-series-part-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/code-maze.com\/http-series-part-3\/","url":"https:\/\/code-maze.com\/http-series-part-3\/","name":"HTTP - Client Identification - Code Maze","isPartOf":{"@id":"https:\/\/code-maze.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage"},"image":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png","datePublished":"2017-07-07T18:58:14+00:00","dateModified":"2023-07-07T09:27:18+00:00","description":"Let's answer the question of why the client identification is so important and how can Web servers identify you (your Web client).","breadcrumb":{"@id":"https:\/\/code-maze.com\/http-series-part-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/code-maze.com\/http-series-part-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/http-series-part-3\/#primaryimage","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2017\/07\/http3-featured-image.png","width":1100,"height":620,"caption":"http3-featured-image"},{"@type":"BreadcrumbList","@id":"https:\/\/code-maze.com\/http-series-part-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/code-maze.com\/"},{"@type":"ListItem","position":2,"name":"HTTP &#8211; Client Identification"}]},{"@type":"WebSite","@id":"https:\/\/code-maze.com\/#website","url":"https:\/\/code-maze.com\/","name":"Code Maze","description":"Learn. Code. Succeed.","publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/code-maze.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/code-maze.com\/#organization","name":"Code Maze","url":"https:\/\/code-maze.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","width":3511,"height":3510,"caption":"Code Maze"},"image":{"@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/CodeMazeBlog"]},{"@type":"Person","@id":"https:\/\/code-maze.com\/#\/schema\/person\/50de31ad4e1992752e972e4715d93739","name":"Vladimir Pecanac","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/person\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2016\/02\/profile_image-100x100.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2016\/02\/profile_image-100x100.png","caption":"Vladimir Pecanac"},"description":"Hi, my name is Vladimir Pecanac, and I am a full-time .NET developer and DevOps enthusiast. I created this blog so I can share the things I learn in the hope of both helping others and deepening my own knowledge of the topics I write about. The best way to learn is to teach.","sameAs":["https:\/\/www.linkedin.com\/in\/vladimir-pecanac\/","https:\/\/x.com\/https:\/\/twitter.com\/PecanacVladimir"],"url":"https:\/\/code-maze.com\/author\/codemaze_blog\/"}]}},"_links":{"self":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/comments?post=542"}],"version-history":[{"count":1,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/542\/revisions"}],"predecessor-version":[{"id":92116,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/542\/revisions\/92116"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media\/54919"}],"wp:attachment":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media?parent=542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/categories?post=542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/tags?post=542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}