tryhackme-http介绍
HTTP(S)基础与网络请求机制摘要 HTTP(超文本传输协议)是用于传输网页数据的通信规则,由Tim Berners-Lee团队开发。HTTPS是其加密版本,确保数据传输安全。网络请求通过URL定位资源,包含协议、域名、端口等要素。HTTP请求包含方法(GET/POST等)、头部信息和状态码(如200成功、404未找到)。头部传递额外数据(如User-Agent),Cookie用于保持会话状态。
什么是HTTP?(超文本传输协议)
HTTP 是你浏览网站时所使用的代码,由 Tim Berners-Lee 和他的团队在 1989 年至 1991 年间开发。HTTP 是一套用于与网页服务器通信的规则,用于传输网页数据,无论是 HTML、图片、视频等。
什么是HTTPS? (超文本传输协议安全)
HTTPS是HTTP的安全版本。 HTTPS数据是加密的,不仅阻止别人看到你接收和发送的数据,还能保证你对应的是正确的网络服务器,而不是被冒充的服务器。

当我们访问网站时,你的浏览器需要向网络服务器请求资源,如HTML、图片,并下载响应。在此之前,你需要明确告诉浏览器如何以及在哪里访问这些资源,这时 URL 会很有帮助。
什么是URL?(统一资源定位器)
如果你用过互联网,你以前用过网址。URL 主要是关于如何在互联网上访问资源的说明。下图展示了URL及其所有功能的样貌(它并非在每个请求中使用所有功能)。

方案: 这会指导使用哪种协议访问资源,比如HTTP、HTTPS、FTP(文件传输协议)。
用户: 有些服务需要身份验证才能登录,你可以在URL里输入用户名和密码登录。
主持人: 你想访问服务器的域名或IP地址。
移植版: 你要连接的端口通常是 HTTP80,HTTPS为443,但它可以托管在1到65535之间的任意端口上。
路径: 你试图访问的资源的文件名或位置。
查询字符串: 可以发送到请求路径的额外信息。比如,/blog?id=1 会告诉博客路径你希望接收 ID 为 1 的博客文章。
片段: 这是对实际页面上某个地点的引用。这通常用于内容较长的页面,并且可以直接链接页面的某个部分,这样用户一进入页面就能立即查看。
提出请求
完全可以用一行 GET / HTTP/1.1 向 Web 服务器发出请求

但要获得更丰富的网页体验,你还需要发送其他数据。这些数据通过称为头部(headers)的形式发送,头部包含额外信息,供你通信的网页服务器使用,但我们会在头部任务中详细介绍。
示例请求:
GET / HTTP/1.1
Host: tryhackme.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://tryhackme.com/
以下是请求的每一句:
第一行: 该请求发送的是 GET 方法(HTTP 方法任务中有更多内容),请求主页,并告知 Web 服务器我们使用 HTTP 协议版本 1.1。
第二行: 我们告诉网页服务器我们想要网站的 tryhackme.com
第三行: 我们告诉网页服务器我们使用的是Firefox 87版浏览器
第4行: 我们告诉网页服务器,推荐我们访问的网页是 https://tryhackme.com
第5行:HTTP 请求总是以空行结尾,告知 Web 服务器请求已完成。
HTTP 方法是客户端在发送 HTTP 请求时显示其预期作的一种方式。HTTP 方法很多,但我们会介绍最常见的,主要还是 GET 和 POST 方法。
获取请求-GET Request
这用于从网络服务器获取信息。
发布请求-POST Request
这用于向网页服务器提交数据,并可能创建新记录
更新请求-PUT Request
这用于向网络服务器提交数据以更新信息
删除请求-DELETE Request
这用于从网络服务器中删除信息/记录。
HTTP状态代码:
在之前的任务中,你学到当 HTTP 服务器响应时,第一行总包含状态码,告知客户端请求的结果以及可能的处理方法。这些状态代码可以分为五个不同的范围:
| 100-199 - 信息响应 | 这些请求是用来通知客户请求的第一部分已被接受,并应继续发送剩余请求。这些代码现在已经不常见了。 |
| 200-299 - 成功 | 这段状态代码用于告诉客户端他们的请求已成功。 |
| 300-399 - 重定向 | 这些工具用于将客户端的请求重定向到其他资源。这可以是去到不同的网站,也可以是完全不同的网站。 |
| 400-499 - 客户端错误 | 用来通知客户他们的请求有错误。 |
| 500-599 - 服务器错误 | 这通常用于服务器端发生的错误,通常表示服务器处理请求时存在较大的问题。 |
常见的HTTP状态码:
HTTP 状态码有很多种,这还不包括应用程序可以自定义的状态码,我们将介绍你最可能遇到的最常见的 HTTP 响应:
| 200 - 好的 | 该请求已成功完成。 |
| 201年 - 创建 | 已经创建了一个资源(例如新用户或新博客文章)。 |
| 301 - 永久搬迁 | 这会将客户的浏览器重定向到新的网页,或者告诉搜索引擎该页面已移动到其他地方,要求他们去那里查看。 |
| 302 - 发现 | 类似于上述永久重定向,但顾名思义,这只是暂时的变化,未来可能还会再次更改。 |
| 400 - 糟糕的请求 | 这告诉浏览器他们的请求中存在问题或缺失。有时如果被请求的网页服务器资源期望某个参数,而客户端未发送,这种方法有时可以使用。 |
| 401 - 未授权 | 目前,未经网页应用授权(通常需用户名和密码)你无法查看该资源。 |
| 403 - 禁忌 | 无论您是否登录,您都无权查看本资源。 |
| 405 - 不允许使用方法 | 资源不允许该方法请求,例如,你向资源/create-account发送GET请求,而它本应接收POST请求。 |
| 404 - 页面未找到 | 你请求的页面/资源不存在。 |
| 500 - 内部服务错误 | 服务器遇到了你的请求出现了某种错误,不知道该如何正确处理。 |
| 503 - 服务不可用 |
这台服务器无法处理你的请求,因为它要么过载,要么正在维护中停机。 |
如果你是视觉型学习者,也可以看看一个很棒的 http.cat 资源来学习状态码。现在,点击右侧的“查看网站”按钮,看看浏览器中这些HTTP状态消息的样子。
头部是你在请求时可以发送给网页服务器的额外数据。
虽然发送HTTP请求时不强制要求使用头部,但你会发现很难正确浏览网站。
通用请求头
这些是客户端(通常是浏览器)发送给服务器的头部。
主持人:有些服务器托管多个网站,所以通过提供主机头,你可以告诉它你需要哪个网站,否则你只能收到服务器的默认网站。
用户代理:这是你的浏览器软件和版本号,告诉网页服务器你的浏览器软件帮助它正确格式化网站,同时 HTML、JavaScript 和 CSS 的某些元素仅在特定浏览器中可用。
内容长度:当向网页服务器(如表单)发送数据时,内容长度告诉服务器应预期网络请求中的数据量。这样服务器可以确保没有遗漏任何数据。
接受编码:告诉网页服务器浏览器支持哪些类型的压缩方法,以便通过互联网传输时数据更小。
通用响应头
这些是服务器在请求后返回给客户端的头部。
套装饼干:存储信息,每次请求都会返回到网络服务器(更多信息请参见 cookies 任务)。
缓存控制:在浏览器缓存中存储响应内容多久后,才会再次请求。
内容类型:这告诉客户返回的是哪种类型的数据,比如 HTML、CSS、JavaScript、图片、PDF、视频等。通过内容类型头,浏览器就能知道如何处理数据。
内容编码: 通过互联网传输数据时,采用了什么方法压缩数据以使其更小?
你可能听说过cookie,它们只是存储在你电脑上的一小块数据。当你从某个网页服务器收到“设置Cookie”头时,Cookie会被保存。然后你每发出一次请求,就会将cookie数据返回到网页服务器。由于HTTP是无状态的(不记录你之前的请求),cookie可以用来提醒网页服务器你的身份、网站的一些个人设置,或者你是否访问过该网站。让我们来看看这个作为HTTP请求的示例:

更多推荐


所有评论(0)