区别
-
get请求最大url长度是2048字符,post无限制。
get可以被收藏为书签,post不行。
get能被缓存,post不行。
二者编码类型不同,post多了二进制数据多重编码。
get的参数会保留在浏览器历史中,post参数不会。
get数据类型为ASCII, post无限制可以为二进制。
相对来说post更安全,因为参数不可见,但是从传输角度来说两者一样,http网路传输都是明文,可以进行抓包。
因此想要传输安全,就要用https协议。
GET方式
- HTML代码(get.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GET</title>
</head>
<body>
<!-- 提交方式为GET -->
<form action="get.php" method="get">
Username:<input type="text" name="username" id="1">
Password:<input type="text" name="passwd" id="2">
<button type="submit">提交</button>
</form>
</body>
</html>
- php代码(get.php):
<?php
echo "username:".$_GET["username"];
echo "<br/><br/>";
echo "password:".$_GET["passwd"];
?>
当输入长度范围内的文本,页面正常:
当输入超过规定长度的文本时,页面报错:
POST方式
- HTML代码(post.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST</title>
</head>
<body>
<!-- 提交方式为POST -->
<form action="post.php" method="post">
Username:<input type="text" name="username" id="1">
Password:<input type="text" name="passwd" id="2">
<button type="submit">提交</button>
</form>
</body>
</html>
- php代码(post.php):
<?php
echo "username:".$_POST["username"];
echo "<br/><br/>";
echo "password:".$_POST["passwd"];
?>
当输入长度范围内的文本,页面正常:
当输入长度大于1024字符的文本时,页面依然正常: