【问题标题】:perl: Why am I getting 404 in html response?perl:为什么我在 html 响应中得到 404?
【发布时间】:2017-09-10 02:22:20
【问题描述】:

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

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

<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 &amp; studentID = &amp; studentName = CgiDemo.pl 放在 xampp cgi-bin 文件夹中 始终显示请求的 url

#! "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";

哪边有问题 谢谢

【问题讨论】:

  • 如果那是你的真实代码,那么它有很多问题。首先,您不能在变量的符号和名称之间放置空格。 $ mydata 是语法错误。首先将use strictuse warnings 放在脚本顶部,然后修复错误。另外我建议你去阅读你的课程材料,因为(没有冒犯)看起来你不知道你在做什么。抱歉,我们不能在这里教你编程。
  • 为什么有这么多多余的空格?这确定是复制粘贴错误吗?

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


【解决方案1】:

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

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

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

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

<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 代码中的许多语法错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    相关资源
    最近更新 更多