很久没写博文了,今天就稍分析下表单提交的GET和POST的细节问题
<form method="get"> vs <form method="post">
这两种不同的方式都可以完成同样的事情,就是提交表单,但是在具体环境下,会有很多差异。
用GET提交表单,如果表单的字段比较多,URL比较长,一个比较长的URL通常需要更多的DNS解析时间,有次一个URL长度接近400个字符,在谷歌浏览器打开比较慢,后来把提交方式改为POST提交,页面一点就打开了,这说明缩短了很多的DNS解析时间。
POST提交,比GET更加安全,如果你提交一个表单,包含用户名和密码,如果用户在URL中看到自己的用户名、密码等信息,就会认为这不是很安全的。
POST提交而且可以没有数据长度的限制。
如果一个页面提交到另外一个页面,用POST方式提交,在另外一个页面按F5刷新,就会提示是否重新发送数据,这点对于用户体验来说不是很好的。
刚才说的一个页面,应该不是表单包含在iframe里面,如果表单包含在iframe里面,就又不同了
比如一个页面form.jsp
formdata.html
用户通过提交打开页面receivedata.jsp,就会发现F5刷新下页面,表单参数比如name="account"全部丢失了,没有那个重新发送数据的对话框。
怎么修改,把formdata.html的post改成get
或者把formdata.html的修改提交方式,把从iframe提交升到form.jsp去提交
<form method="get"> vs <form method="post">
这两种不同的方式都可以完成同样的事情,就是提交表单,但是在具体环境下,会有很多差异。
用GET提交表单,如果表单的字段比较多,URL比较长,一个比较长的URL通常需要更多的DNS解析时间,有次一个URL长度接近400个字符,在谷歌浏览器打开比较慢,后来把提交方式改为POST提交,页面一点就打开了,这说明缩短了很多的DNS解析时间。
POST提交,比GET更加安全,如果你提交一个表单,包含用户名和密码,如果用户在URL中看到自己的用户名、密码等信息,就会认为这不是很安全的。
POST提交而且可以没有数据长度的限制。
如果一个页面提交到另外一个页面,用POST方式提交,在另外一个页面按F5刷新,就会提示是否重新发送数据,这点对于用户体验来说不是很好的。
刚才说的一个页面,应该不是表单包含在iframe里面,如果表单包含在iframe里面,就又不同了
比如一个页面form.jsp
<iframe src="formdata.html"></iframe>
formdata.html
<form name="rcvForm" action="receivedata.jsp" method="post" target="_blank">
<input type="hidden" name="account" value="xyh"/>
<input type="button" value="提交" onclick="document.rcvForm.submit()"/>
</form>
用户通过提交打开页面receivedata.jsp,就会发现F5刷新下页面,表单参数比如name="account"全部丢失了,没有那个重新发送数据的对话框。
怎么修改,把formdata.html的post改成get
<form action="receivedata.jsp" method="get" target="_blank">
<input type="hidden" name="account" value="xyh"/>
<input type="button" value="提交" onclick="document.rcvForm.submit()"/>
</form>
或者把formdata.html的修改提交方式,把从iframe提交升到form.jsp去提交
<form action="receivedata.jsp" method="get" target="_blank">
<input type="hidden" name="account" value="xyh"/>
<input type="button" value="提交" onclick="window.frames[0].document.form[0].submit();""/>
</form>