GET请求与POST请求

GET请求

语法:
请求首行(请求行);
请求头信息(请求头);
空行;
请求体;(当然啦,get请求没有请求体)
例:

GET /Hello/index.jsp HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=C55836CDA892D9124C03CF8FE8311B15

其中配置的解释如下:
GET /Hello/index.jsp HTTP/1.1:GET请求,请求服务器路径为Hello/index.jsp,协议为1.1;
Host:localhost:请求的主机名为localhost;

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0…:与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的;

Accept: */*:告诉服务器,当前客户端可以接收的文档类型, /,就表示什么都可以接收;

Accept-Language: zh-CN:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;

Accept-Encoding: gzip, deflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;

Connection: keep-alive:客户端支持的链接方式,保持一段时间链接,默认为3000ms;

Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送过去。

POST请求:

语法:
请求首行(请求行);
请求头信息(请求头);
空行;
请求体;(当然啦,get请求没有请求体)
例:
POST请求要求将form标签的method的属性设置为post

<form action="index.html" method="post">
	用户名<input name="username" type="text"  />
	<input type ="submit" value="提交"  />
</form>
POST /Hello/index.html HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/Hello/
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 14
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=774DA38C1B78AE288610D77621590345

username=admin

其中配置的解释如下:
POST请求有请求体,而GET请求没有请求体。

Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链
接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;

Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制,例如“传智”这两个字使用UTF-8的url编码用为“%E4%BC%A0%E6%99%BA”;

Content-Length:13:请求体的长度,这里表示13个字节。
keyword=hello:请求体内容!hello是在表单中输入的数据,keyword是表单字段的名字。

GET请求与POST请求的区别:

最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的
所以相比较而言post请求更加安全,当然啦以正是因为GET请求的参数是放在URL里的所以导致GET请求没有请求体;
GET请求的URL传参有长度限制,而POST请求没有长度限制;
GET请求的参数只能是ASCII码,所以中文需要URL编码,而POST请求传参没有这个限制;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GET 和 POST 是 HTTP 协议中常用的两种请求方法,主要有以下几点区别: 1. 参数位置不同 GET 请求的参数是在 URL 中以查询字符串的形式出现的,例如:http://www.example.com/page?param1=value1&param2=value2。 POST 请求的参数是在请求体中以键值对的形式出现的,例如:param1=value1&param2=value2。 2. 数据大小限制不同 GET 请求由于参数是在 URL 中传递的,所以受到 URL 长度的限制,不同的浏览器和服务器对 URL 长度的限制也不同,一般不建议在 GET 请求中传递大量的数据。 POST 请求由于参数是在请求体中传递的,所以不受 URL 长度的限制,但是服务器和客户端对请求体大小也有限制,一般情况下 POST 请求可以传递更大的数据。 3. 安全性不同 GET 请求中参数是以明文形式出现在 URL 中的,如果传递的参数包含敏感信息,那么这些信息可能会被拦截或者泄露,因此 GET 请求不适合传递敏感信息。 POST 请求中参数是在请求体中传递的,相对于 GET 请求POST 请求更加安全,因为请求体中的参数不会被直接显示在 URL 中。 4. 缓存处理不同 GET 请求默认会被浏览器缓存,如果请求相同的 URL,浏览器会直接从缓存中获取数据,不会重新请求服务器,这样可以减少网络流量,提高网站性能。 POST 请求不能被浏览器缓存,每次请求都会重新向服务器请求数据。 总的来说,GET 请求适合传递少量的非敏感信息,POST 请求适合传递大量的数据或者敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值