HTTP POST请求帮助

3

我已经用PHP制作了一个简单的网页来测试通过Telnet进行POST请求。 以下是该网页的代码(example.php):

<html>
<body>
<form method="post" action="example.php>">
Your Name:<input type="text" size="12" maxlength="12" name="Name"><br />
<input type="submit" value="submit" name="submit">
</form> 
<?php echo $_POST["Name"]; ?>
</body>
</html>

这个在浏览器中可以工作,但我想从telnet测试它。我尝试过:

telnet localhost 80
POST example.php HTTP/1.0
Host: localhost
Content-Type: text/html; charset=iso-8859-1
Content-Length: 11

Name=myname

但它不起作用...有什么帮助吗?


3
要么查看 Fiddler 或 Wireshark,了解真实的 POST 数据包内容,要么深入阅读相关 RFC 文件 ;) - Konerak
但是“它不起作用……”这并不是一个好的错误信息。- 告诉我们更多关于系统的反应和行为。检查Web服务器访问/错误日志等。 - The Bndr
是的,你说得对...我会尝试深入挖掘 :) 无论如何,服务器的响应是 HTTP/1.1 400 Bad Request。 - user601836
我建议使用curl,它对于测试HTTP请求来说更加用户友好:curl http://localhost/example.php -d 'Name=myname' - deceze
2个回答

4

Konerak是对的。看一下真实请求。例如Content-Type。我试了一下,得到了:

Content-Type: application/x-www-form-urlencoded

你还缺少第二个表单字段:按钮。但我想这并不重要...
Name=myname&submit=submit

请参考http://en.wikipedia.org/wiki/POST_%28HTTP%29,了解更多细节并开始研究...

更新: 尝试

POST /example.php HTTP/1.0
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

Name=myname

至少对我来说,这个有效...

2

更改你的内容类型

POST /example.php HTTP/1.0
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 11

Name=myname

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接