\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{SandRock} \pdfinfo{ /Title (http-1-1-protocol.pdf) /Creator (Cheatography) /Author (SandRock) /Subject (HTTP/1.1 protocol Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{1D60A3} \definecolor{LightBackground}{HTML}{F0F5F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{HTTP/1.1 protocol Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{SandRock} via \textcolor{DarkBackground}{\uline{cheatography.com/78567/cs/19155/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}SandRock \\ \uline{cheatography.com/sandrock} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 19th March, 2019.\\ Updated 19th March, 2019.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Request and Response Messages}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{The {\emph{HTTP protocol}} consist into a {\emph{request message}}, sent from a {\emph{client}} to a {\emph{web server}}; and a {\emph{response message}}, sent from the {\emph{server}} to the {\emph{originating client}}. \newline % Row Count 4 (+ 4) Request message general format: \newline % Row Count 5 (+ 1) `HTTP Request Line` \newline % Row Count 6 (+ 1) `HTTP Request Headers` \newline % Row Count 7 (+ 1) `(empty line)` \newline % Row Count 8 (+ 1) `HTTP Request Body` \newline % Row Count 9 (+ 1) Response message general format: \newline % Row Count 10 (+ 1) `HTTP Response Line` \newline % Row Count 11 (+ 1) `HTTP Response Headers` \newline % Row Count 12 (+ 1) `(empty line)` \newline % Row Count 13 (+ 1) `HTTP Response Body`% Row Count 14 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Request Line}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Format: "{\bf{`METHOD PATH PROTOCOL`}}" \newline % Row Count 1 (+ 1) METHOD: `GET`, `HEAD`, `POST`, `PUT`, `DELETE`, `TRACE`, `OPTIONS`, `CONNECT`, `PATCH` \newline % Row Count 3 (+ 2) PATH: the path of the resource \newline % Row Count 4 (+ 1) PROTOCOL: `HTTP/1.1`% Row Count 5 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Example: `GET /images/logo.png HTTP/1.1`} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Request Headers}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{"{\bf{`NAME: VALUE`}}"* \newline % Row Count 1 (+ 1) NAME: `{[}A-Za-z0-9{]}{[}A-Za-z0-9-{]}+` \newline % Row Count 2 (+ 1) VALUE: US-ASCII octets \newline % Row Count 3 (+ 1) Headers are extra information for the request. There are many standard headers and you can create your own. \newline % Row Count 6 (+ 3) See Common HTTP Request Headers% Row Count 7 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Example set of headers: \newline `Host: en.wikipedia.org` \newline `User-Agent: Mozilla/5.0 Firefox/64.0` \newline `Accept: text/html,application/xhtml+xml,application/xml;q=0.9,{\emph{/}};q=0.8` \newline `Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,fr-FR;q=0.4,fr;q=0.2` \newline `Accept-Encoding: gzip, deflate, br` \newline `Connection: keep-alive` \newline `Cookie: \seqsplit{Auth=8QXA5fSQeZAEKZVG6iRjMWvQ8KtQKAaj`}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Request Body}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{If the HTTP method used is `POST` or `PUT`, the request may be followed by a body. It can be a file or a specific form of data. \newline % Row Count 3 (+ 3) The `Content-Type` header must be filled with a MIME type to indicate the type of content. \newline % Row Count 5 (+ 2) The body is separated from the header by two line feeds (`\textbackslash{}n`).% Row Count 7 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Response Line}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Format: `PROTOCOL STATUS REASON` \newline % Row Count 1 (+ 1) PROTOCOL: `HTTP/1.1` \newline % Row Count 2 (+ 1) STATUS: Any HTTP {\emph{Status Code}} \newline % Row Count 3 (+ 1) REASON: A reason message \newline % Row Count 4 (+ 1) The reason message is usually the label associated to the status code. Some APIs may use this text field to specify an error message.% Row Count 7 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Examples: \newline `HTTP/1.1 200 OK` \newline `HTTP/1.1 404 Not Found`} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Response Headers}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{"{\bf{`NAME: VALUE`}}"* \newline % Row Count 1 (+ 1) NAME: `{[}A-Za-z0-9{]}{[}A-Za-z0-9-{]}+` \newline % Row Count 2 (+ 1) VALUE: US-ASCII octets \newline % Row Count 3 (+ 1) Headers are extra information for the response. There are many standard headers and you can create your own. \newline % Row Count 6 (+ 3) See Common HTTP Response Headers% Row Count 7 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Response Body}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{The is usually a response body after the response headers. It can be a file or a specific form of data. \newline % Row Count 3 (+ 3) The Content-Type header must be filled with a MIME type to indicate the type of content. \newline % Row Count 5 (+ 2) The body is separated from the headers by two line feeds (\textbackslash{}n).% Row Count 7 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{HTTP Request Methods}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`GET`: used to retrieve a resource. Has no request body. \newline % Row Count 2 (+ 2) `POST`: used to submit a new resource (path) or send data. Usually has a body. \newline % Row Count 4 (+ 2) `HEAD`: used to preview the result of a `GET`operation. Has no request body and no respond body. \newline % Row Count 6 (+ 2) `PUT`: used to submit an update to an existing resource \newline % Row Count 8 (+ 2) `DELETE`: used to delete the specified resource \newline % Row Count 9 (+ 1) `TRACE`: echoes the received request for tracing purposes \newline % Row Count 11 (+ 2) `OPTIONS`: verify the server supports a specified request (see \{\{link="https://developer.mozilla.org/en-US/docs/Glossary/Preflight\_request"\}\}Preflight requests\{\{/link\}\}) \newline % Row Count 15 (+ 4) `CONNECT`: used by HTTPS \newline % Row Count 16 (+ 1) `PATCH`: allows partial modification of a resource% Row Count 17 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.34379 cm} x{3.63321 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Common HTTP Request Headers}} \tn % Row 0 \SetRowColor{LightBackground} Accept & List of MIME types supported \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{Accept-Language} & List of languages read by the user \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \seqsplit{Content-Length} & Length in bytes of the request body \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{Content-Type} & MIME type of the request body \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} Cookie & List of cookies stored by the client \tn % Row Count 9 (+ 2) % Row 5 \SetRowColor{white} Host & Host name of the website \tn % Row Count 10 (+ 1) % Row 6 \SetRowColor{LightBackground} \seqsplit{User-Agent} & Identification string for the web browser \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{There are \{\{link="https://en.wikipedia.org/wiki/List\_of\_HTTP\_header\_fields"\}\} many more available\{\{/link\}\}. \newline You can create your own headers.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.4931 cm} x{3.4839 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{HTTP Status Codes}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{{\emph{1xx}}}} & {\bf{{\emph{Informational}}}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} 100 & Continue \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{{\emph{2xx}}}} & {\bf{{\emph{Successful}}}} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} 200 & OK \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} 201 & Created \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} 202 & Accepted \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} 204 & No Content \tn % Row Count 7 (+ 1) % Row 7 \SetRowColor{white} {\bf{{\emph{3xx}}}} & {\bf{{\emph{Redirection}}}} \tn % Row Count 8 (+ 1) % Row 8 \SetRowColor{LightBackground} 301 & Moved permanently \tn % Row Count 9 (+ 1) % Row 9 \SetRowColor{white} 302 & Found \tn % Row Count 10 (+ 1) % Row 10 \SetRowColor{LightBackground} 304 & Not Modified \tn % Row Count 11 (+ 1) % Row 11 \SetRowColor{white} 308 & Permanent Redirect \tn % Row Count 12 (+ 1) % Row 12 \SetRowColor{LightBackground} {\bf{{\emph{4xx}}}} & {\bf{{\emph{Client Error}}}} \tn % Row Count 13 (+ 1) % Row 13 \SetRowColor{white} 400 & Bad Request \tn % Row Count 14 (+ 1) % Row 14 \SetRowColor{LightBackground} 401 & Unauthorized \tn % Row Count 15 (+ 1) % Row 15 \SetRowColor{white} 403 & Forbidden \tn % Row Count 16 (+ 1) % Row 16 \SetRowColor{LightBackground} 404 & Not Found \tn % Row Count 17 (+ 1) % Row 17 \SetRowColor{white} 405 & Method Not Allowed \tn % Row Count 18 (+ 1) % Row 18 \SetRowColor{LightBackground} {\bf{{\emph{5xx}}}} & {\bf{{\emph{Server Error}}}} \tn % Row Count 19 (+ 1) % Row 19 \SetRowColor{white} 500 & Internal Server Error \tn % Row Count 20 (+ 1) % Row 20 \SetRowColor{LightBackground} 502 & Bad Gateway \tn % Row Count 21 (+ 1) % Row 21 \SetRowColor{white} 503 & Service Unavailable \tn % Row Count 22 (+ 1) % Row 22 \SetRowColor{LightBackground} 504 & Gateway Timeout \tn % Row Count 23 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{There are many \{\{link="https://en.wikipedia.org/wiki/List\_of\_HTTP\_status\_codes"\}\}other codes\{\{/link\}\}; these are the most used. You should not create your own codes.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Common HTTP Response Headers}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{`Cache-Control`: Indicates client caching conditions \newline % Row Count 2 (+ 2) `Content-Length`: Length of the response body in bytes \newline % Row Count 4 (+ 2) `Content-Type`: MIME type of the response body \newline % Row Count 5 (+ 1) `Expires`: Client is allowed to keep the resouce in cache \newline % Row Count 7 (+ 2) `Location`: Redirection URL \newline % Row Count 8 (+ 1) `Server`: name of the server software \newline % Row Count 9 (+ 1) `Set-Cookie`: new cookies that should be stored client-side% Row Count 11 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{There are \{\{link="https://en.wikipedia.org/wiki/List\_of\_HTTP\_header\_fields"\}\} many more available\{\{/link\}\}. \newline You can create your own headers.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Content size \& streaming}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{When a message body is exchanged, the receiver must be able to determine when the message is complete (or how many bytes should be received to consider the body complete). \newline % Row Count 4 (+ 4) The main operating way is to use the `Content-Length` header with the size (in bytes) of the body that is to come. \newline % Row Count 7 (+ 3) When a streaming method is desired, an alternative way is to use the `Transfer-Encoding: chunked` header and to follow the \{\{link="https://en.wikipedia.org/wiki/Chunked\_transfer\_encoding"\}\}Chunked transfer encoding\{\{/link\}\} protocol.% Row Count 12 (+ 5) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Notes}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{All specifications in this document have been simplified from the official HTTP standard. Always refer to the RFCs if necessary. \newline % Row Count 3 (+ 3) \{\{link="https://tools.ietf.org/html/rfc7230"\}\}RFC-7230: Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing\{\{/link\}\}% Row Count 6 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Protocol versions}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{HTTP/0.9}} and {\bf{HTTP/1.0}} \newline % Row Count 1 (+ 1) History: \{\{link="https://tools.ietf.org/html/rfc1945"\}\}RFC-1945\{\{/link\}\} (actual) \newline % Row Count 3 (+ 2) {\bf{HTTP/1.1}} \newline % Row Count 4 (+ 1) This is the most used HTTP version. \newline % Row Count 5 (+ 1) History: \{\{link="https://tools.ietf.org/html/rfc2068"\}\}RFC-2068\{\{/link\}\} (obsolete), \{\{link="https://tools.ietf.org/html/rfc2616"\}\}RFC-2616\{\{/link\}\} (obsolete), \{\{link="https://tools.ietf.org/html/rfc7230"\}\}RFC-7230\{\{/link\}\} (actual) \newline % Row Count 10 (+ 5) {\bf{HTTP/2}} \newline % Row Count 11 (+ 1) {\emph{According to W3Techs, as of March 2019, 33.9\% of the top 10 million websites supported HTTP/2.}} \newline % Row Count 13 (+ 2) History: \{\{link="https://tools.ietf.org/html/rfc7540"\}\}RFC-7540\{\{/link\}\} (actual) \newline % Row Count 15 (+ 2) {\bf{HTTP/3}} \newline % Row Count 16 (+ 1) Also called {\emph{HTTP-over-QUIC}}, it is the upcoming major version of HTTP.% Row Count 18 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{About MIME types}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{The `Accept` and `Content-Type` headers use {\emph{MIME types}} to specify the type of message content. \newline % Row Count 2 (+ 2) There are basic MIME types for simple files and web formats: `text/plain`, `text/html`, `application/xml`, `application/json`, \seqsplit{`application/octet-stream`}, `text/css`, `text/javascript`... \newline % Row Count 6 (+ 4) There are MIME types for all known file formats: `image/jpeg`, `image/png`, `audio/mpeg`, `application/pdf`, `application/zip`, `font/woff`, `video/mp4`... \newline % Row Count 10 (+ 4) There are specific MIME types related to browsers and APIs: `multipart/mixed`, `multipart/form-data`, `multipart/byteranges`, \seqsplit{`application/x-www-form-urlencoded`}... \newline % Row Count 14 (+ 4) Sometimes, extra information are added to a type. Text format can have a charset specification: \seqsplit{`text/plain;charset=UTF-8`} \newline % Row Count 17 (+ 3) See: \{\{link="https://tools.ietf.org/html/rfc2045"\}\}RFC-2045\{\{/link\}\}, \{\{link="https://tools.ietf.org/html/rfc2046"\}\}RFC-2046\{\{/link\}\}, \{\{link="https://tools.ietf.org/html/rfc2047"\}\}RFC-2047\{\{/link\}\}, \{\{link="https://tools.ietf.org/html/rfc4288"\}\}RFC-4288\{\{/link\}\}, \{\{link="https://tools.ietf.org/html/rfc4289"\}\}RFC-4289\{\{/link\}\}, \{\{link="https://tools.ietf.org/html/rfc2049"\}\}RFC-2049\{\{/link\}\}; and \{\{link="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics\_of\_HTTP/MIME\_types"\}\}MDN: MIME type\{\{/link\}\}% Row Count 28 (+ 11) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Examples: \newline `Content-Type: \seqsplit{text/plain;charset=utf-8`}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Proxy}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{HTTP Proxy servers are act as an intermediary for client-to-server requests such as HTTP. \newline % Row Count 2 (+ 2) A forward proxy is a type of proxy server that receives and forwards requests in order to cache and facilitate access to a wide range of web servers. \newline % Row Count 6 (+ 4) A reverse proxy is a type of proxy server that receives and forwards requests in order to do load-balancing for a group of web servers.% Row Count 9 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{See \{\{link="https://en.wikipedia.org/wiki/Proxy\_server"\}\}Proxy servers\{\{/link\}\}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}