手机版

详细解释了在开始使用Ajax时GET和POST的区别

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

在之前的文章中,以怀旧的方式总结了一种创建兼容不同浏览器的XHR对象的方法:

建立XHR对象后,客户端需要做的是以某种方式将数据传输到服务器,以获得相应的响应。在这里,在第二季的Ajax技术总结中,我将重点介绍两种提交数据的方式。

在此之前,我们需要了解我们的HTTP传输协议:

HTTP作为客户端和服务器之间的请求-响应协议。

示例:客户端(浏览器)向服务器提交一个HTTP请求;服务器向客户端返回响应。响应包含关于请求的状态信息和可能请求的内容。如果要基于HTTP协议传输数据,必须使用两种请求方法。

两种HTTP请求方法:GET和POST

客户机和服务器之间请求-响应中最常用的两种方法是GET和POST。

GET-从指定的资源请求数据。将要处理的数据提交到指定的资源。这是W3C上GRT和POST的使用场景描述。字面上,GET用于从服务器获取数据,POST用于向服务器传输数据

这可以从提交路径的URL和数据中看出:

可用于指向网址的属性有:

1.行动;形式上;

2.a标签中的href

3.imgscript中的src属性(该属性不受“同源策略”的限制,可用于“跨域”。我想在近期总结一个关于跨域的问题,先在这里挖坑)

在这里,让我们谈谈他们在表单提交方面的差异

1.在Ajax表单提交中,get使用open()函数提交数据,数据在哪里作为URL提交?键值的形式拼接在网址之后:

xhr.open('get ',' xxx.php?姓名=汤姆年龄=18 ';xhr . send(null);在浏览器的URL中,是这样的:

获取提交网址

这里可以看到,GET将参数数据队列添加到提交表单的动作属性所指示的URL中,该值与表单中的每个字段一一对应,在URL中可以看到。ID的url长度是有限制的,当url太长时,会自动截取超长字符。这样很容易造成一个问题:当传递的参数太多,导致url太长时,url自动截取超长字符,最终无法获取传递的参数。这也限制了GET传输的数据大小一般不超过2KB

再者,从URL截图可以看出, GET的安全性很低。当通过GET方法提交数据时,用户名和密码会出现在URL上。如果:

-浏览器可以缓存登录页面;-其他人可以访问客户的机器。

然后,其他人可以从浏览器的历史记录中读取客户的账号和密码。因此,在某些情况下,GET方法会带来严重的安全问题。

这并不是说get方法没有优势。在速度测试中,GET提交的速度是POST的几十倍。

第二,在Ajax表单提交中,POST只需要在open()函数中提供URL,send()函数提交数据:

//获取表单数据var form DOM=document . queryselector(' form ');var formData=new formData(formDom);//发送数据xhr.open('post ',formdom . action);xhr . send(formData);POST意味着:通过HTTPPOST机制将表单中的每个字段及其在HTML HEADER中的内容发送到动作属性所指向的URL地址。用户看不到此过程。安全性更高

POST传输的数据量比较大,默认一般是无限制的。在这个演示中,您可以以FormData对象的形式传递图片、富文本和其他文件,这是get无法做到的。

综上所述,Get是向服务器请求数据,Post是向服务器提交数据的请求。在表单中,方法默认为“获取”。

本质上,GET和POST只是发送机制上的不同,而不是一个接一个!

总之,这两种表单提交方式没有优劣之分,只有不同的适应场景,需要根据我们日常工作中的需要来把握。

后面我会总结几种不同的浏览器和服务器交互中路径的编写方法。

以上是边肖给大家介绍的GET和POST的区别的详细说明。希望对你有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:详细解释了在开始使用Ajax时GET和POST的区别是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。