二、HTTP:如何用telnet提交表单

作者: lesca 分类: HTTP,Tutorials,Web 发布时间: 2011-02-18 20:20

提交一个表单有两种方法:

  • GET
  • POST

第一种方法提交的表单会显式地添加在URL后,以参数形式呈现;
第二种方法则会在HTTP报文中传送,可以允许很大的长度,而且保密性好。

提交第一个表单
这个表单将使用GET方法,这主要是由于以下PHP脚本文件中的全局变量$_GET决定的。
File: get.php
[php]
<?php
$string = $_GET["text"];
if ($string == "")
echo "No submission";
else
echo "You submitted $string";

?>
[/php]
功能解析:如果没有提交任何东西,它会返回No submission,否则返回提交的字符串。

telnet test 80
Trying 127.0.0.1...
Connected to test.
Escape character is '^]'.
GET /get.php HTTP/1.1
Host: test

HTTP/1.1 200 OK
Date: Fri, 18 Feb 2011 11:46:17 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Vary: Accept-Encoding
Content-Length: 13
Content-Type: text/html

No submission
Connection closed by foreign host.

现在我们加上那个text参数上去:

telnet test 80
Trying 127.0.0.1...
Connected to test.
Escape character is '^]'.
GET /get.php?text=hello HTTP/1.1
Host:test

HTTP/1.1 200 OK
Date: Fri, 18 Feb 2011 11:57:17 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Vary: Accept-Encoding
Content-Length: 19
Content-Type: text/html

You submitted hello

POST方法提交表单
File:post.php
[php]
<?php
$string = $_POST["text"];
if ($string == "")
echo "No submission";
else
echo "You submitted $string";

?>
[/php]
我们直接提交一些东西,不过报文有所不同:

telnet test 80
Trying 127.0.0.1...
Connected to test.
Escape character is '^]'.
POST /post.php HTTP/1.1
Host: test
Referer: test/
Content-type: application/x-www-form-urlencoded
Content-length: 10
Connection: Close

text=hello

HTTP/1.1 200 OK
Date: Fri, 18 Feb 2011 12:09:01 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.7
Vary: Accept-Encoding
Content-Length: 19
Connection: close
Content-Type: text/html

You submitted hello

请注意红色部分为要提交的正文,必须与报文头空一行。
它的长度决定Content-lenth。它的内容由Content-type决定。
此处Content-typeapplication/x-www-form-urlencoded,表示要处理的是一个表单的数据。

第一行POST /post.php指出了表单将交给post.php脚本进行处理。
此处也可以是任何CGI脚本,如/cgi-bin/do.pl
读者如果有任何与此主题相关的问题或者建议,欢迎留言提出!

版权声明

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://www.lesca.cn/archives/submit-http-form-with-telnet.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!