get和post(get和post产生的url地址都可以被收藏)

软件问答 2023.06.18 114

目录:

GET 和 POST 请求的优缺点

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作

(6)get请求的是静态资源,则会缓存,如果是数据,则不会缓存

1.post请求包含更多的请求头

因为post需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。

2.最重要的一条,post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据

(1)浏览器请求tcp连接(第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回100 Continue响应

(5)浏览器发送数据

(6)服务器返回200 OK响应

(1)浏览器请求tcp连接(第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回200 OK响应

也就是说,目测get的总耗是post的2/3左右,这个口说无凭,网上已经有网友进行过测试。

(1)http协议并未规定get和post的长度限制

(2)get的最大长度限制是因为浏览器和web服务器限制了URL的长度

(3)不同的浏览器和web服务器,限制的最大长度不一样

(4)要支持IE,则最大长度为2083byte,若支持Chrome,则最大长度8182byte

get 和 post 请求的区分

get : 附加在url 地址栏,比较明显,容易被人看到

post: 数据在请求体里面,不容易看到,相对安全一些

get : 请求参数大小有限制(http 协议本身没有限定get 参数的大小,但是浏览器对 url 地址长度做了限定,习惯也说get 参数大小有限制)

post: 参数大小无限制

get : 一般在url 地址的后面

post: 一般在 request body 请求体里面

(不是特别严谨,get 也能放在 request body 请求体上,post 也能放在url 地址的后面,最终只要数据接收方去对应的位置解析就可以了)

get : 参数类型默认 application/x-www-form-urlencoded form序列化字符串格式

post: 常用有4种格式 application/x-www-form-urlencoded, application/json, multipart/form-data, application/xml

get : (本质作用是获取资源,资源没有变化,就可以使用缓存的)请求可以被缓存

post: (本质作用是创建资源)请求不会被缓存

get : 只支持发送 ascii 码类型的

post: 编码类型不限制

get : 只发1次 tcp 数据包

post: 一般会发两次 tcp 数据包(firefox 浏览器对 post 的实现也是发送一次数据包)

get和post的区别面试

GET 和 POST功能不同:

GET - 是从服务器上获取数据

POST - 是向服务器传送数据

参数传递方式不同:

GET 请求的参数是在 URL 中发送的

POST 请求的 参数是在消息主体中发送的

数据传输大小限制不同:

get传送的数据量较小,不能大于2KB。

post传送的数据量较大,一般被默认为不受限制。

安全性不同

get安全性比较低,因为传参方式在url中,很容易被看到

post安全性较高,如果参数包含机密信息的话,建议用Post数据提交方式

GET产生一个TCP数据包;POST产生两个TCP数据包

post和get请求的区别 请求报文

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

(6)等等很多...

以上回答,只是一些浅显的回答。

它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。

一次HTTP请求,HTTP报文会从“客户端”流到“代理”再流到“服务器”,在服务器工作完成之后,报文又会从“服务器”流到“代理”再流到“客户端”。

所有的HTTP报文都可以分为两类,请求报文和响应报文。请求和响应报文的基本报文结构大致是相同的,只有起始行的语法有所不同。

大致结构是这样的:

举个简单的列子:

请求行由三部分组成:请求方法,请求URL(不包括域名),HTTP协议版本。

请求方法比较多:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

最常用的是GET和POST。

传递参数长度受限制,因为传递的参数是直接表示在地址栏中,而特定浏览器和服务器对url的长度是有限制的。

因此,GET不适合用来传递私密数据,也不适合拿来传递大量数据。

一般的HTTP请求大多都是GET。

POST把传递的数据封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,对数据量没有限制,也不会显示在URL中。

表单的提交用的是POST。

HEAD跟GET相似,不过服务端接收到HEAD请求时只返回响应头,不发送响应内容。所以,如果只需要查看某个页面的状态时,用HEAD更高效,因为省去了传输页面内容的时间。

删除某一个资源。

用于获取当前URL所支持的方法。若请求成功,会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

把一个资源存放在指定的位置上。

本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

回显服务器收到的请求,主要用于测试或诊断。

CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于 SSL 加密服务器的链接与非加密的HTTP代理服务器的通信。

HTTP/1.0支持:GET、POST、HEAD三种HTTP请求方法。

HTTP/1.1是当前正在使用的版本。该版本默认采用持久连接,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

HTTP/1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT五种HTTP请求方法。

1.User-Agent : 产生请求的浏览器类型。

2.Accept : 客户端希望接受的数据类型,比如 Accept:text/xml(application/json)表示希望接受到的是xml(json)类型。

3.Content-Type:发送端发送的实体数据的数据类型。

比如,Content-Type:text/html(application/json)表示发送的是html类型。

4.Host : 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

请求头之后是一个空行,通知服务器以下不再有请求头

GET没有请求数据,POST有。

与请求数据相关的最常使用的请求头是 Content-Type 和 Content-Length 。

状态行也由三部分组成:服务器HTTP协议版本,响应状态码,状态码的文本描述

格式:HTTP-Version Status-Code Reason-Phrase CRLF

比如:HTTP/1.1 200 OK

状态码:由3位数字组成,第一个数字定义了响应的类别

1.1xx:指示信息,表示请求已接收,继续处理。

2.2xx:成功,表示请求已被成功接受,处理。

3.3xx:重定向

4.4xx:客户端错误

5.5xx:服务器端错误,服务器未能实现合法的请求

asp.net页面的提交方式POST和GET有什么区别?

1)get是从服务器上获取数据,post是向服务器传送数据。

(1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。

(2) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。例如:get 提交用 Request.QueryString["aa"].ToString();

post 提交用 Request.Form["aa"].ToString();

(2) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。

(3) 安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

GET和POST的区别,何时使用POST?

GET和POST的区别,何时使用POST ?

1.GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符

2.GET: 传送的数据量较小,不能大于2KB。post 传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 用IIS过滤器的只接受get参数,所以一般大型搜索引擎都是用get方式

3.GET:是从服务器上获取数据,post 是向服务器传送数据。 get 请求返回 request – URI 所指出的任意信息。

4.GET:是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程。

5.POST:一般用于修改服务器上的资源,对所发送的信息没有限制。

6.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值,也就是说Get是通过地址栏来传值,而Post是通过提交表单来传值。

本文转载自互联网,如有侵权,联系删除

相关推荐