HTTP 请求

HTTP 请求方法

GET

GET 方法是最常见的最简单的http 请求方法 ,主要作用于获取资源

URL : http://127.0.0.1/index.php?id=1

POST

POST 方法主要用于传输实体的主体


16行 传输的就是实体数据

POST /dvwa/login.php HTTP/1.1
Host: 192.168.0.129
Content-Length: 88
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.0.129
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.0.129/dvwa/login.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: security=impossible; PHPSESSID=8ghplrmet4ovhbkcaqohdjk4f0
Connection: close

username=admin&password=password&Login=Login&user_token=63b17c3616cbfcf429bb5f9bf111350b

GET 与 POST 区别

相对于安全来说 GET 是不安全的 是可见 可保存的 ,POST 安全一点 。
前端区别
1.GET在浏览器回退时是无害的,而POST会再次提交请求。
2.GET产生的URL地址可以被Bookmark,而POST不可以。
3.GET请求会被浏览器主动cache,而POST不会,除非手动设置。
4.GET请求只能进行url编码,而POST支持多种编码方式。
5.GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
6.GET请求在URL中传送的参数是有长度限制的,而POST么有。
7.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。.
8.GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
9.GET参数通过URL传递,POST放在Request body中。

PUT

PUT 方法主要用于传输文件 ,像FTP协议的文件上传一样
但是由于Http/1.1的PUT方法不带验证机制,存在安全性问题,所以一般的网站都不用这个方法来进行文件传输。

PUT /info.php http/1.1
Host: 
Content-Length: 18

<?php phpinfo();?>



HEAD


HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。

一个HEAD请求的响应可被缓存,也就是说,响应中的信息可能用来更新之前缓存的实体。如果当前实体跟缓存实体的阈值不同(可通过Content-Length、Content-MD5、ETag或Last-Modified的变化来表明),那么这个缓存就被视为过期了。

HEAD请求常常被忽略,但是能提供很多有用的信息,特别是在有限的速度和带宽下。主要有以下特点:
1、只请求资源的首部;
2、检查超链接的有效性;
3、检查网页是否被修改;
4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等

DELETE

DELETE方法主要是用来删除某个资源,是和PUT完全相反的方法。
同时该方法也不带认证机制,所以一般网站并不会对它进行开放使用。

服务端

// 传统的URL
app.delete('/axios', (req, res) => {
  res.send('axios delete 传递参数' + req.query.id)
})
// Restful 的URL
app.delete('/axios/:id', (req, res) => {
  res.send('axios delete(Restful) 传递参数' + req.params.id)
})

客户端

axios.delete('http://localhost:3000/axios?id=123').then(function (res) {
   console.log(res.data);
});
axios.delete('http://localhost:3000/axios/123').then(function (res) {
   console.log(res.data);
});
axios.delete('http://localhost:3000/axios', {
   params: {
       id: 234
   }
}).then(function (res) {
   console.log(res.data);
});

OPTIONS

OPTIONS方法用来查询:请求的指定资源都支持什么http方法。

OPTIONS /x/internal/gaia-gateway/ExClimbWuzhi HTTP/2
Host: api.bilibili.com
Accept: */*
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Origin: https://www.bilibili.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
Sec-Fetch-Dest: empty
Referer: https://www.bilibili.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close


image.png

CONNECT

HTTP 1.1 中 预留给能够将连接改为管道方式的代理服务器
在 HTTP 协议中,CONNECT 方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(tunnel)。
例如,CONNECT 可以用来访问采用了 SSL (en-US) (HTTPS) 协议的站点。客户端要求** 代理 **服务器将 TCP 连接作为通往目的主机隧道。之后该服务器会代替客户端与目的主机建立连接。连接建立好之后,代理服务器会面向客户端发送或接收 TCP 消息流。
CONNECT 是一个应用范围为点到点的方法。
重点:
隧道:Tunnel
代理: Proxy

CONNECT https://www.jianshu.com/u/f67233ce6c0c:80 HTTP/1.1
Host: www.web-tinker.com:80
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic YWJjOjEyMw==
Content-Length: 0

TRACE

回显服务器收到的请求 主要用于测试和诊断
TRACE 请求中不能带有实体的主体部分。TRACE响应的实体主体部分包含了响应服务器收到的请求的精确副本。当TRACE请求到达目的服务器时, 整条请求报文都会被封装在一条HTTP响应的主体中回送给发送端。当TRACE响应到达时,客户端可以检查服务器收到的确切报文,以及它所经过的代理列表(在 Via 首部)。TRACE 响应的 Content-Type 为 message/http,状态为 200 OK。

还能测xss
https://www.cnblogs.com/gaopei/p/11380349.html

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值