perl:为什么我在html响应中得到404?

时间:2017-04-13 20:24:53

标签: html perl url http-status-code-404 cgi

我用Sublime Text 3和xampp写了一个html响应perl cgi遇到错误404

第一页是index.html 网址:http: // localhost / aa / 在htdocs内的xampp上的一个文件夹

<HTML>
<HEAD> <Title> CGI with lighttpd and Perl </ Title> </ HEAD>
<BODY>

<Form METHOD = GET ACTION = echo site_url ("C: \ xampp \ cgi-bin \ cgiDemo.pl")> <BR>
Class:

<INPUT type = radio name = class value = "3A"> 3A
<INPUT type = radio name = class value = "3B"> 3B
<P>
Input Your ID Here: <input type = "text" name = "studentID">
<BR>
Input Your Name Here: <input type = "text" name = "studentName">
<P>
<INPUT TYPE = submit VALUE = "Send"> <INPUT TYPE = reset VALUE = "Clear">
</ P>
</ Form>

</ BODY>
</ HTML>

第二页是cgiDemo.pl 网址:http: // localhost / aa / echo? Class = 3A & studentID = & studentName = CgiDemo.pl放在xampp cgi-bin文件夹中 始终显示请求的网址

#! "C: \ xampp \ perl \ bin \ perl.exe"

Print "Content-type: text / html \ n \ n";

Print "<html> <head> <title> HELLO! </ Title> </ head>";
Print "<body> \ n";
Print "<h2> CGI is working !!! </ h2> \ n";

# Print "String = $ ENV {'QUERY_STRING'} \ n \ n <p>";
@values ​​= split (/ & /, $ ENV {'QUERY_STRING'});
Foreach $ i (@values) {
($ Varname, $ mydata) = split (/ = /, $ i);
Print "$ varname = $ mydata \ n \ n <p>";
}
Print "</ body> </ html> \ n";

哪一方是个问题 谢谢

1 个答案:

答案 0 :(得分:0)

您的代码中存在很多问题。我不确定你是如何学习Perl的,但我认为你需要付出更多的努力: - )

您的描述不是很清楚,但我认为您说在HTML页面中提交表单时会出现404错误。这几乎肯定意味着表单元素上的“action”属性包含无效的URL。所以让我们从这一行开始:

<Form METHOD = GET ACTION = echo site_url ("C: \ xampp \ cgi-bin \ cgiDemo.pl")>

正如人们在评论中提到的,此代码中的空格太多。希望这是在将代码从您的机器切割到此站点的过程中添加的问题。所以也许它真的像这样:

<Form METHOD="GET" ACTION='echo site_url ("C:\xampp\cgi-bin\cgiDemo.pl')>

然后就是那个奇怪的echo site_url(...)电话。我完全不确定是什么技术 - 但你有一个文件路径,而不是URL。我认为应该更像是:

<Form METHOD="GET" ACTION="cgi-bin/cgiDemo.pl">

随着这些方面的变化,应该找到你的CGI程序。然后,您可以开始考虑Perl代码中的许多语法错误。