解读HTTP状态码【Hack The Box-Grammar】
Grammar
一个标红的 web challenges,70分,让我们瞅瞅有多难。
先进入题目,好吧,无法进入,题坏了,溜了溜了(开个玩笑,还是再看看吧)。
报错 403,意味着什么呢?
服务器拦截?还是权限不够?没有这个页面?
带着这样的疑问,我们今天就来学习今天的主题。
HTTP 状态码
什么是 HTTP 状态码?
也就是当你访问一个网页的时候,浏览器向服务器发起请求,服务器返回的响应标识。
如何查看?
在 F12 的【network】下,有 Status 这列可查看 HTTP 状态码(进入页面后再查看需要 F5 刷新一下页面)。
下面就来看看具体有哪些状态码。
1xx Informational
信息状态码。(没见过)
100 Continue
服务器收到了请求的初始部分,未被服务器拒绝,服务器打算在请求被完全接收并执行后发送最终响应。
(你的肥橘已听到呼唤,正在向你飞奔而来~)
101 Switching Protocols
服务器理解并愿意通过“升级报头”字段来满足客户对在此连接上使用的应用协议进行更改的请求。服务器必须在响应中生成一个升级报头字段,该字段指示在终止 101 响应的空行之后立即切换到哪些协议。
“请指出你的肥橘。”
102 Processing
临时响应,用于通知客户端,服务器已接受完整的请求,但尚未完成。
2xx Success
成功状态码,最常见的就是 200 OK
200 OK
请求成功。
200响应中发送的有效负载取决于请求方法。有效载荷的预期含义可以概括为:
- GET 目标资源的表示
- HEAD 与 GET 相同,但没有表示数据
- POST 动作状态或结果的表示
- PUT DELETE 行为状态的表示
- OPTIONS 通讯选项的表示
- TRACE 最终服务器接收到的请求消息的表示
“叫我啥事啊?”
201 Created
该请求已得到满足,并导致创建了一个或多个新资源。由请求创建的主要资源由响应中的位置标头字段标识,或者,如果未接收到位置字段,则由有效请求URI标识。
“我来了,并带来了一串礼物”
202 Accepted
该请求已被接受进行处理,但是处理尚未完成。该请求最终可能会执行,也可能不会最终执行,因为在实际进行处理时可能会不允许该请求。
“反正我已经咬了,你看我也没用,你猜我还咬不咬?”
203 Non-authoritative Information
该请求已成功完成,但是封闭的有效负载已由转换代理从服务器的 200 OK 响应中修改了。此状态代码允许代理在应用转换后通知收件人,因为该知识可能会影响以后有关内容的决策。例如,将来对内容的缓存验证请求可能仅适用于相同的请求路径(通过相同的代理)。
204 No Content
服务器已成功满足请求,并且响应有效载荷正文中没有其他要发送的内容。
(就像是空盘子)
205 Reset Content
服务器已满足该请求,并希望用户代理将“document view”重置为从服务器接收到的状态,该文档视图导致发送了请求。
206 Partial Content
服务器通过传输与请求的 Range 标头字段中找到的可满足范围相对应的所选表示形式的一个或多个部分,成功地完成了对目标资源的范围请求。
207 Multi-Status
在可能需要多个状态代码的情况下,多状态响应传达有关多个资源的信息。
208 Already Reported
在 DAV:propstat 响应元素中使用,以避免重复枚举多个绑定到同一集合的内部成员。
226 IM Used
服务器已完成对资源的GET请求,并且响应表示应用于当前实例的一个或多个实例操作的结果。
3xx Redirection
重定向状态码,多用于跳转或限制访问。
300 Multiple Choices
目标资源具有多个表示,每个表示都有其自己的更特定的标识符,并且正在提供有关替代项的信息,以便用户(或用户代理)可以通过将其请求重定向到一个或多个这些标识符来选择首选表示。
301 Moved Permanently
已为目标资源分配了一个新的永久URI,以后对该资源的任何引用都应使用其中一个URI。
302 Found
目标资源临时驻留在其他URI下。由于重定向有时可能会更改,因此客户端应继续将有效请求URI用于将来的请求。
(被找到了~)
303 See Other
服务器正在将用户代理重定向到其他资源,如 Location 标头字段中的 URI 所示,该资源旨在提供对请求的间接响应。
304 Not Modified
已收到条件 GET 或 HEAD 请求,如果不是因为条件评估为 false,则将导致 200 OK 响应。
换句话说,服务器不需要传输目标资源的表示形式,因为请求表明以请求为条件的客户端已经具有有效的表示形式。因此,服务器正在重定向客户端以使用该存储的表示形式,就好像它是 200 响应的有效负载一样。
305 Use Proxy
由于有关代理的带内配置的安全问题,在本规范的先前版本中定义,并且现在不建议使用。
307 Temporary Redirect
目标资源临时驻留在不同的 URL 下,并且如果用户代理执行自动重定向到该 URL 的请求,则不得更改该请求方法。
308 Permanent Redirect
已为目标资源分配了一个新的永久 URL,以后对该资源的任何引用都应使用其中一个 URL。
类似于 301,不同之处在于它不允许将请求方法从 POST 更改为 GET。
4xx Client Error
客户端错误状态码,最不愿看到的就是 404。
400 Bad Request
由于某些东西被认为是客户端错误(例如,格式错误的请求语法,无效的请求消息框架或欺骗性的请求路由),服务器无法或不会处理请求。
401 Unauthorized
由于缺少针对目标资源的有效身份验证凭据,因此尚未应用该请求。产生401响应的服务器必须发送 WWW-Authenticate 头字段,该字段包含至少一个适用于目标资源的质询。如果请求包括身份验证凭据,则 401 响应表示已拒绝这些凭据的授权。
(禁止入内)
402 Payment Required
未定义,保留以备将来使用。
403 Forbidden
服务器收到了该请求,但拒绝对其进行授权。
“我拒绝。”
404 Not Found
服务器未找到目标资源的当前表示,或不愿意透露该资源的存在。
“你找不到我。”
405 Method Not Allowed
在请求行中接收到的方法是源服务器已知的,但目标资源不支持。
406 Not Acceptable
根据请求中收到的主动协商标头字段,目标资源不具有用户代理可接受的当前表示,并且服务器不愿意提供默认表示。
407 Proxy Authentication Required
类似于 401,但它指示客户端需要进行身份验证才能使用代理。
408 Request Timeout
服务器在准备等待的时间内没有收到完整的请求消息。
409 Conflict
由于与目标资源的当前状态存在冲突,因此无法完成请求。此代码用于用户可能能够解决冲突并重新提交请求的情况。
(存在冲突)
410 Gone
目标资源在服务器上不再可用,并且这种情况很可能是永久的。如果服务器不知道或无法确定条件是否是永久性的,则应改用状态代码 404。
411 Length Required
服务器拒绝在没有定义 Content-Length 的情况下接受请求。
412 Precondition Failed
在服务器上测试时,请求标头字段中给出的一个或多个条件评估为false。
413 Payload Too Large
服务器拒绝处理请求,因为请求有效负载大于服务器愿意或能够处理的负载。
414 Request-URI Too Long
服务器拒绝为请求提供服务,因为请求目标比服务器愿意解释的时间更长。
(长~)
415 Unsupported Media Type
服务器拒绝为请求提供服务,因为有效载荷的格式不受目标资源上此方法的支持。
416 Requested Range Not Satisfiable
请求的 Range 字段中的范围均不与所选资源的当前范围重叠,或由于无效范围或过多的较小或重叠范围的请求而拒绝了所请求的范围集。
417 Expectation Failed
至少一台入站服务器无法满足请求的 Expect 标头字段中给出的期望。
418 I'm a teapot
返回错误代码“418 I'm a teapot”。
421 Misdirected Request
该请求被定向到不能产生响应的服务器。这可以由未配置为对请求 URL 中包含的方案和权限的组合产生响应的服务器发送。
422 Unprocessable Entity
服务器了解请求实体的内容类型(因此 415 状态代码不合适),并且请求实体的语法正确(因此 400 状态代码不合适),但是无法处理包含的内容。
例如,如果XML请求主体包含格式正确(即,语法正确)但语义错误的XML指令,则可能发生此错误情况。
423 Locked
方法的源或目标资源已锁定。
“锁上了!”
424 Failed Dependency
无法对资源执行该方法,因为请求的操作依赖于另一个操作,并且该操作失败。
426 Upgrade Required
服务器拒绝使用当前协议执行请求,但是在客户端升级到其他协议后,服务器可能愿意这样做。服务器必须在 426 响应中发送 Upgrade 标头字段,以指示所需的协议。
428 Precondition Required
服务器要求请求是有条件的。
HTTP/1.1 428 Precondition Required
Content-Type: text/html
<title>Precondition Required</title>
</head>
<h1>Precondition Required</h1>
<p>This request is required to be conditional; try using "If-Match".</p>
</body>
</html>
状态码为 428 的响应不能由高速缓存存储。
429 Too Many Requests
用户在给定的时间内发送了太多请求(限速)。
响应表示应包含说明条件的详细信息,并且可以包含 Retry-After 标头,该标头指示在发出新请求之前要等待多长时间。
HTTP/1.1 429 Too Many Requests
Content-Type: text/html
Retry-After: 3600
<title>Too Many Requests</title>
</head>
<h1>Too Many Requests</h1>
<p>I only allow 50 requests per hour to this Web site per
logged in user. Try again soon.</p>
</body>
</html>
(真的很多)
431 Request Header Fields Too Large
服务器不愿意处理该请求,因为其标头字段太大。减小请求头字段的大小后,可以重新提交请求。当请求标头字段的集合总数太大时,以及单个标头字段出现故障时,都可以使用它。在后一种情况下,响应表示应该指定哪个头域太大。
HTTP/1.1 431 Request Header Fields Too Large
Content-Type: text/html
<title>Request Header Fields Too Large</title>
</head>
<h1>Request Header Fields Too Large</h1>