当前位置: 首页 > Web前端 > CSS

post提交的数据有哪些编码格式?能否通过url参数获取用户账号密码

时间:2023-03-30 13:25:45 CSS

这里是修真学院的前端小课堂。每篇文章分享自【背景介绍】【知识分析】【常见问题】【解决方案】【编码实践】【扩展思考】【更多讨论】【参考文献】八个方面深度剖析前端知识/技能,本文分享的是:【帖子提交的数据有哪些编码格式?能否通过URL参数获取用户账号密码】一、背景介绍HTTP/1.1协议中规定的HTTP请求方式包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT。其中POST一般用于向服务器提交数据。本文主要讨论POST提交数据的几种编码方式。2、知识分析协议规定POST提交的数据必须放在消息体(entity-body)中,但是协议没有规定数据必须使用什么编码方式。但是,只有服务端解析成功,数据才会发出才有意义。服务器通常会根据请求头(headers)中的Content-Type字段来了解请求中的消息体是如何编码的,然后解析消息体。POST提交数据方案,包括Content-Type和消息体编码方式。让我们开始正式介绍它们。三、常见问题常用的POST数据提交方式有哪些?4.解决方案四种常见的POST数据提交方式:1.application/x-www-form-urlencoded2.multipart/form-data3.application/json4.text/xml1.APPLICATION/X-WWW-FORM-URLENCODED这个应该是通过POST提交数据的最常见方式。如果浏览器原生的form表单没有设置enctype属性,最终会默认以application/x-www-form-urlencoded的形式提交数据。在POST提交数据中,Content-Type指定为application/x-www-form-urlencoded;提交的数据按照key1=val1&key2=val2编码,key和val都经过url转码。大多数服务器端语言都对这种方式有很好的支持。很多时候,我们在使用Ajax提交数据的时候,也会用到这种方式。xhr.open("POST","http://www.example.com",true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");2.MULTIPART/FORM-DATA这也是一种常见的提交POST数据的方式。当我们使用表单上传文件时,必须让表单的enctype等于这个值。这种方式一般用于上传文件,各大服务器语言也都有很好的支持。上面提到的两种POST数据方式,浏览器都原生支持。xhr.open("POST","http://www.example.com",true);xhr.setRequestHeader("Content-Type","multipart/form-data");3.APPLICATION/JSONapplication/json这个Content-Type作为响应头大家肯定不陌生。事实上,现在越来越多的人将它作为请求头来告诉服务器消息体是一个序列化的JSON字符串。由于JSON规范的流行,除了低版本的IE,所有主流浏览器都原生支持JSON.stringify,而且服务端语言也有处理JSON的函数,所以使用JSON不会遇到什么麻烦。xhr.open("POST","http://www.example.com",true);xhr.setRequestHeader("Content-Type","application/json");4.TEXT/XML是一种使用HTTP作为传输协议,XML作为编码远程调用的规范。它的应用也很广泛,可以很好地支持现有的XML-RPC服务。但是XML结构还是过于臃肿,而JSON对于一般场景来说更加灵活方便。xhr.open("POST","http://www.example.com",true);xhr.setRequestHeader("Content-Type","text/xml");5.编码实践6.扩展思考我们应该选择哪种编码方式?1.选择后台约定的提交方式2.看提交的数据类型,提交文件的话选择multipart/form-data7。参考资料参考1:四种常见的POST数据提交方式参考2:浅谈HTTPGet和Post的区别参考3:HTTP协议POST请求问题总结8、GET和POST有什么区别多讨论?谣言一:GET方法有长度限制;POST方法没有长度限制。(1).因为GET是通过URL来提交数据的,所以GET可以提交的数据量与URL的长度直接相关。实际上,URL中的参数是没有上限的,HTTP协议规范也没有限制URL的长度。此限制是特定浏览器和服务器强加的限制。IE将URL的长度限制为2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,具体取决于操作系统的支持。(2).理论上POST没有大小限制,HTTP协议规范也没有大小限制。说“POST数据量有80K/100K大小限制”是不准确的,POST数据没有限制。限制作用是服务器处理程序的处理能力。谣言二:GET是从服务器获取数据;POST是向服务器发送数据。答:GET方式不是向服务器传输数据吗?那么什么是?URL中的子句发送?无论是GET还是POST,都可以向服务器发送数据,只是数据的位置不同。GET请求的数据会附加到URL中,POST会将提交的数据放在HTTP包体中;无论是GET还是POST,都必须从服务器获取数据。关键问题是:GET的主要任务是获取数据,但是也可以在获取数据之前先向服务器提交一些数据;POST的主要任务是提交数据,但是提交数据后服务器端也会返回一些显示数据给客户端。谣言三:GET不安全,用户可以从地址栏看到传输的数据;POST是安全的,用户无法从地址栏看到传输的数据。答:通过GET提交数据,用户名和密码会以明文形式出现在URL上,因为(1)登录页面可能被浏览器缓存,(2)其他人可以查看浏览器的历史记录,那么其他人就可以得到你的帐号和密码。POST方式看不到传输的数据,因为IE浏览器做了限制。如果你通过第三方工具看到POST发送的数据,你还能说POST是安全的吗?从理论上讲,GET和POST都不安全,否则没必要研究HTTPS。》我们相信人人都可以成为工程师,现在就开始,找个师兄指导你入门,学习的路上不再迷茫,这里是技能树。IT修真学院:http:///www.jnshu.com,适合初学者切换到互联网行业的聚集地。”欢迎加入IT交流群565734203与大家一起探讨交流