我的python cgi如何返回特定的http状态代码,例如403或418?
我尝试了显而易见的(打印"状态:403 Forbidden"),但它不起作用.
我只是安装Ubuntu 13.10而我正在尝试安装Apache.但是当我尝试在cgi-bin中运行perl文件时,浏览器只显示纯文本.
我的Apache的default.conf如下:
AddHandler cgi-script .cgi .pl
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch
#Order allow,deny
Require all granted
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
这是我的perl cgi文件:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<title> PERL CGI</title>\n";
print "<body>";
print "hello perl-cgi!!!!!!!";
print "</body>";
print "</html>\n";
Run Code Online (Sandbox Code Playgroud)
我在mime.conf中打开了Handler文件在/ usr/lib/cgi-bin中,我将其作为http而不是file:///运行.我还安装了mod_perl.我是Apache新手.我搜索了几个小时,尝试无限的Apache配置,阅读Apache文档,但仍然无法解决它.是因为"+ ExecCGI"代码有问题吗?我看到另一个人在将Ubuntu 12.04更新到13.10之后也遇到了类似的问题.也许Ubuntu是问题?请帮忙.Apache配置和Ubuntu权限几乎让我很生气.
我这里有一个带有uClinux的小型嵌入式设备.有一个支持CGI脚本的Boa Web服务器.我需要制作基本的动态页面.
要求
我找到了这个页面http://www.cs.tut.fi/~jkorpela/forms/cgic.html 描述了如何实现GET和POST方法.
但是登录和用户呢?可以使用linux的登录名和密码吗?您是否有一个如何实现http身份验证的示例?
或者更好地使用这个cgi c ++库? http://www.gnu.org/software/cgicc/
我对此没有经验,谢谢.
例:
http://example.com/?a=text&q2=text2&q3=text3&q2=text4
Run Code Online (Sandbox Code Playgroud)
删除" q2 "后,它将返回:
http://example.com/?q=text&q3=text3
Run Code Online (Sandbox Code Playgroud)
在这种情况下,有多个" q2 ",所有都被删除.
我在Ubuntu 10.10(Maverick Meerkat)工作并在Apache下运行我的CGI脚本,但它显示以下错误...
[周六错误没有这样的文件或目录:'/usr/lib/cgi-bin/fst.cgi'的exec失败[2011年10月22日02:56:45] [错误] [客户端127.0.0.1]脚本标题过早结束:fst.cgi
我的剧本是
#!/usr/bin/perl
print "Content-type:text/html\n\n";
print "hello world";
Run Code Online (Sandbox Code Playgroud)
我已经设置了文件的权限......
我还在文件中添加了以下行apache.conf:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
Options +ExecCGI
</Directory>
AddHandler cgi-script .cgi .pl
Run Code Online (Sandbox Code Playgroud)
但它仍然向我显示同样的错误.我做了所有可能的改变,但我没有取得任何成功......
我试图使用cURL发布文件,并通过CGI Bash脚本在另一侧接收它并使用相同的名称存储它.上传完成后,diff原始文件和重建文件之间应返回零.
cURL发送数据的方式:
curl --request POST --data-binary "@dummy.dat" 127.0.0.1/cgi-bin/upload-rpm
Run Code Online (Sandbox Code Playgroud)
接收器脚本:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'
echo '<title>Foo</title>'
echo '</head>'
echo '<body>'
echo "<p>Start</p>"
if [ "$REQUEST_METHOD" = "POST" ]; then
echo "<p>Post Method</p>"
if [ "$CONTENT_LENGTH" -gt 0 ]; then
echo "<p>Size=$CONTENT_LENGTH</p>"
while read -n 1 byte -t 3; do echo -n -e "$byte" >> ./foo.dat ; done
fi
fi
echo '</body>'
echo '</html>'
exit 0
Run Code Online (Sandbox Code Playgroud)
但它不起作用.文件不是在服务器端创建的.我怎样才能获得文件名?
我正在尝试使用Python,但无法为localhost正确设置我的服务器(使用Ampps).Python通过IDLE和命令行运行得很好,但是,当我在浏览器中打开文件时,代码会显示而不会运行.
我按照这个http://www.imladris.com/Scripts/PythonForWindows.html教程来设置cgi,但它不起作用.
这是我的"hello world"程序的代码,如果这有什么不同的话.
#!/usr/bin/env python
# -*#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
Run Code Online (Sandbox Code Playgroud)
有什么建议?
披露:我搜索了很多,我不认为我的问题(对于我的配置)在这里得到了解答.例如, 运行python脚本,因为cgi apache服务器 没有回答它.
所以:我有一个最简单的脚本:
#!/usr/bin/env python
print "Content-type: text/html"
print ""
print "<h1>Hello from Python!</h1>"
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中运行它时,它实际上显示自己而不是Python的预期 Hello!
我做了以下操作让它运行:
a)每个人都可以执行; 它完美地运行在一个外壳中.
b)它位于具有以下配置的虚拟目录中(在/ etc/apache2/sites-available/my_cgi_dir中):
Run Code Online (Sandbox Code Playgroud)<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/my_cgi_dir/> Options Indexes +ExecCGI FollowSymLinks MultiViews AddHandler cgi-script .cgi .py AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log …
我正在运行apache2服务器.CGIHTTPServer在目录/ mnt/hgfs/wind/BTech_BTP/BTP/code/final_code /中运行.我正在使用网址http:// localhost:8000/test/www/adder.html.
我在../final_code/test/www目录中有三个文件.
adder.html包含:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Adder</title>
</head>
<body>
<h1>Fantastic Adder - Sum Two Numbers<br></h1>
<br>
<form action="adder.cgi" method="get" enctype="multipart/form-data">Number
1:<input maxlength="60" size="60" value="0" name="x"> <br>
<br>
Number 2:<input name="y" value="0" maxlength="60" size="60"><br>
<br>
<input value="Find Sum" type="submit">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
adder.cgi包含
#!/usr/bin/env python3
import cgi # NEW
def main(): # NEW except for the call to processInput
form = cgi.FieldStorage() # standard cgi script lines …Run Code Online (Sandbox Code Playgroud)