http的两种请求方式是get和post,比如我用通过通过这两种方式传参,分别传a=1和b=2。get的请求方式是通过在网址后面加上“?a=1&b=2”,例如:https://adworld.xctf.org.cn/task/answer?a=1&b=2 post传参的话通过hackbar,在下面的解题中,会给出方法。
post方式提交的话,我们要用到hackbar
知识点1:get&post请求
什么是GET请求? GET请求是最常见的请求类型,最常用于向服务器查询某些信息,必要时,可以将查询字符串参数追加到URL的末尾,以便将信息发送给服务器。使用GET请求经常会发生一个错误,即查询字符串的格式有问题。查询字符串中每个参数的名称和值都必须使用encodeURLComponent()进行编码,然后才能放到URL的末尾;而且所有名-值对儿必须有和号(&)分隔,如下所示:
xhr.open("get"."example.php?name1=valuel&name2=value2",true); 使用GET方法的具体情况 1.客户端与服务端的交互像是一个提问(如查询操作、搜索操作、读操作) 2.请求是为了查找资源,HTML表单数据仅用来帮助搜索 3.请求结果无持续性的副作用(如进行搜索) 4.收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符 5.获取参数或者短小的内容时用GET,如?id=5 或者 ?title=abc&url=http...
GET方式提交数据特点 1、GET方式在url后面拼接参数,只能以文本的形式传递参数 2、传递的数据量小,4kb左右(不同浏览器会有差异) 3、安全性低,会将信息显示在地址栏 4、速度快,通常用于对安全性要求不高的请求
什么是POST请求 使用频率仅次于GET的是POST请求,通常用于向服务器发送应该被保存的数据。POST请求应该把数据作为请求的主体提交,而 GET请求传统上不是这样。POST请求的主体可以包括非常多的数据,而且格式不限。在open()方法的第一个参数的位置传入"post",就可以初始化一个POST请求请求,如下所示:
xhr.open("post","example.php",true); 发送POST请求的第二步就是向send()方法中传入某些数据。默认情况下,服务器对POST请求和提交的Web表单 的请求并不会一视同仁,因此,服务器必须有程序来读取发送过来的原始数据,并从中解析出有用的部分。
使用POST方法的具体情况 1.交互是一个命令或订单(order),比提问包含更多信息 2.交互改变了服务器端的资源并被用户察觉,例如订阅某项服务 3.用户需要对交互产生的结果负责 4.请求的结果有持续性的副作用,例如,数据库内添加新的数据行 5.GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长度的限制,所以使用POST 6.获取大断的内容用POST,通常表单用 POST 方式提交数据,表单的method必须设置为POST 7.对数据有变更的请求(增删)用post;(比如发贴,回复的form 用的是 POST)
POST方式提交数据特点: 1、post提交数据相对于get的安全性高一些。(注意:抓包软件也会抓到post的内容,安全性要求高可以进行加密) 2、传递数据量大,请求对数据长度没有要求 3、请求不会被缓存,也不会保留在浏览器的历史记录中 4、用于密码等安全性要求高的场合,提交数据量较大的场合,如上传文件,发布文章等 5、POST方式提交数据上限默认为8M(可以在PHP的配置文件post_max_size选项中修改)
GET请求和POST请求的区别 这两种请求都是将数据传送到服务器,他们的区别在于:
GET在浏览器回退时是无害的,而POST会再次提交请求 GET产生的URL地址可以被Bookmark,而POST不可以 GET请求会被浏览器主动cache,而POST不会,除非手动设置 GET请求只能进行url编码,而POST支持多种编码方式 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留 GET请求在URL中传送的参数是有长度限制的,而POST没有 对参数的数据类型,GET只接受ASCII字符,而POST没有限制 GET参数通过URL传递,POST放在Request body中 GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息