# Examples ## HTTP/1.1 Request An HTTP request looks like this: ```http GET / HTTP/1.1 Host: 192.168.1.51:8000 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,fr;q=0.8 ``` ## HTTP/1.1 Response An HTTP response looks like this: ```http HTTP/1.1 200 OK Server: nginx Date: Sun, 07 Nov 2021 16:25:17 GMT Content-Type: text/html; charset=utf-8 Content-Length: 14 Connection: keep-alive X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Cache-Control: private, no-cache, no-store, must-revalidate X-Content-Type-Options: nosniff Pragma: no-cache Expires: Sat, 01 Jan 2000 00:00:00 GMT Referrer-Policy: no-referrer-when-downgrade The content goes here. ``` * The empty line is important as it marks the end of the headers and the start of the actual content. The following headers are especially important: * `Content-Type` marks the type of content and what the browser needs to do with it. * `Server` is the name of the server software. We'll probably put `Bashweb/1.0 ` in here. * `Content-Length` is not required but recommended, especially with file downloads.