从GET切换为POST提交数据的方法


一、前言

GET传参本身是用来从服务器取东西的,GET也能够向服务器传送较少的数据,但这些数据本身只是用来告诉服务器,用户需要什么样的数据。
因此GET传参来提交数据,会有长度的限制。此时如果服务器采用$_REQUEST来接收传参,这意味着可以将提交数据的方式转换一下,实现提交指定的数据。


二、GET切换为POST

要将GET传参转换为POST传参,并不是简单的将头部的GET改为POST,然后参数放到实体中,这样服务器是无法正确接收到你发送的数据的。需要注意二者的区别:GET传参缺少的部位:Content-Type、Content-Length、Origin、post传参内容,当然Origin不一定需要,但其他内容是必须的。下面以一个靶场为例,讲解两种修改传参的方式:

(一)用工具全自动修改

首先进入靶场,地址在:http://124.70.71.251:46005/
点击静夜思,然后抓取数据包:
在这里插入图片描述
鼠标单击右键,选择Change request method,效果如下:
在这里插入图片描述
然后发送数据包,查看网页的内容:
在这里插入图片描述

(二)手工修改

手工修改是本文的重点了,毕竟只会用工具改充其量就是个脚本小子,既要知其然也要知其所以然。
首先重新抓取刚才的数据包,然后按ctrl+R发送到repeter模块:
在这里插入图片描述
按顺序完成如下修改:
第一步:
首先要明确提交方式,因此将头部的GET改为POST
第二步:
GET传参的数据包比POST方式的数据包,头部信息会少几个字段,需要补齐,我们一个个补。
首先将参数content的内容放到实体中,作为POST提交的内容(注意?要删掉):
在这里插入图片描述
然后在头部添加一行Content-Type:字段,后面的参数用于告诉服务器,我提交的POST数据是什么数据类型。关于其中的参数,有很多,例如:
常见的参数对应的媒体格式类型:

字段数据类型
text/htmlHTML格式
text/plain纯文本格式
text/xmlXML格式
image/gifgif图片格式
image/jpegjpg图片格式
image/pngpng图片格式

当然还有application开头的类型:

字段数据类型
application/xhtml+xmlXHTML格式
application/xmlXML数据格式
application/atom+xmlAtom XML聚合格式
application/jsonJSON数据格式
application/pdfpdf格式
application/mswordWord文档格式
application/octet-stream二进制流数据(eg:文件下载)
application/x-www-form-urlencoded默认提交的方式

通过对比分析上面的参数,我们可以先尝试按默认的方式来提交,也就是ContentType的参数应为application/x-www-form-urlencoded
接着还需要告诉服务器,实体部分内容的总长度是多少(即有多少个字符)。
在此之前,先将原始的数据进行一次URL解码,然后替换掉原始的数据:
在这里插入图片描述
现在需要将实体部分的内容全选,然后发送到Comparer模块即可知道字符的数量(包括content这个参数):
在这里插入图片描述
可以看到,长度为9966,因此添加字段Content-Length: 9966。注意,:后面应有一个空格,前面的Content-Type字段后面的:也是。
因此完整的数据包如下:
在这里插入图片描述
发送数据包:
在这里插入图片描述
提交KEY:
在这里插入图片描述


三、小结

本文通过一道靶场的练习分享了GET传参方式切换为POST传参的方法,其中手工操作较为繁琐,但读者也应该掌握这个方法,以夯实自己的基本功,切勿做一个只能依赖工具的脚本小子。

  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
在Vue中,通常使用vue-router来实现路由。Vue Router提供了一种机制来管理浏览器历史记录,并在不同的URL之间进行切换,包括GET请求POST请求。 GET请求可以通过路由的路径来处理,例如: ```javascript const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About } ] const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }) ``` 这里定义了两个路由,一个是根路由'/'对应的组件是Home,另一个是'/about'对应的组件是About。当用户访问不同URL时,Vue Router会自动切换到相应的组件。 至于POST请求,Vue Router本身并不能直接处理POST请求,因为POST请求通常用于向服务器提交数据,而不是进行页面导航。在处理POST请求时,通常需要与后端服务器进行交互,可以使用Vue的axios库或者fetch API来发送POST请求。 以下是使用axios发送POST请求的示例代码: ```javascript import axios from 'axios' axios.post('/api/data', { key: value }) .then(response => { // 处理响应数据 }) .catch(error => { // 处理错误 }) ``` 在上述代码中,我们使用axios.post()方法发送POST请求到指定的URL '/api/data',并传递一个包含数据的对象作为请求体。然后可以使用.then()方法处理服务器返回的响应数据,或使用.catch()方法处理错误情况。 希望以上信息能够帮助到您,如果有其他问题,请随时提问!
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值