HTTP 条件请求
在 HTTP 协议中,条件请求指的是请求的执行结果会因特定首部的值不同而不同。这些首部规定了请求的前置条件,请求结果则视条件匹配与否而有所不同。
请求引发的不同的反应取决于请求所使用的方法,以及组成前置条件首部集合:
- 对于安全(safe)方法来说,例如 GET,通常用来获取文件,条件请求可以被用来限定仅在满足条件的情况下返回文件。这样可以节省带宽。
- 对于非安全(unsafe)方法来说,例如 PUT 方法,通常用来上传文件,条件请求可以被用来限定仅在满足文件的初始版本与服务器上的版本相同的条件下才会将其上传。
HTTP 的重定向
URL 重定向(也称为 URL 转发)是一种为页面、表单或者整个 Web 站点/应用提供多个 URL 地址的技术。HTTP 对此操作有一种特殊类型的响应,称为 HTTP 重定向(HTTP redirect)。
在 HTTP 协议中,重定向操作由服务器向请求发送特殊的重定向响应而触发。重定向响应包含以 3
开头的状态码,以及 Location 标头,其保存着重定向的 URL。
不同类型的重定向映射可以划分为三个类别:
- 永久重定向
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections#%E6%B0%B8%E4%B9%85%E9%87%8D%E5%AE%9A%E5%90%91
- 临时重定向
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections#%E4%B8%B4%E6%97%B6%E9%87%8D%E5%AE%9A%E5%90%91
- 特殊重定向
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Redirections#%E7%89%B9%E6%AE%8A%E9%87%8D%E5%AE%9A%E5%90%91
HTTP的请求方法
GET
HTTP GET
方法请求指定资源的表示。使用 GET
的请求应该只用于请求数据,而不应该包含数据。
GET /index.html
POST
HTTP POST
方法发送数据给服务器。请求主体的类型由 Content-Type 标头指定。
一个 POST
请求通常是通过 HTML 表单发送的,并导致服务器的相应修改。在这种情况下,内容类型(content type)是通过在 <form> 元素中设置正确的 enctype 属性,或是在 <input> 和 <button> 元素中设置 formenctype 属性来选择的:
application/x-www-form-urlencoded
:数据被编码成以'&'
分隔的键值对,同时以'='
分隔键和值。键和值中非字母或数字的字符会被 URL 编码,这也是这种类型不支持二进制数据的原因(应使用multipart/form-data
代替)。multipart/form-data
:每个值是在一块数据(“主体部分”)中发送的,由用户代理指定的分隔符(“boundary”)将每个部分分离开。键值在每个部分的Content-Disposition
标头中给出。text/plain
POST /test
PUT
HTTP PUT
请求方法创建一个新的资源或用请求的有效载荷替换目标资源的表示。
PUT
与 POST 方法的区别是,PUT
方法是幂等的:调用一次与连续调用多次效果是相同的(即没有副作用),而连续调用多次相同的 POST 方法可能会有副作用,比如多次提交同一订单。
PUT /new.html HTTP/1.1
HTTP状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。。
下面是常见的 HTTP 状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
题例
CTFHub 技能树 Web Web前置技能 HTTP协议 -请求方式,302跳转,响应包源代码,Cookie等