标签: cgi

如何向Perl脚本添加国际化?

我正在考虑为用Perl编写的成熟CGI应用程序引入多语言支持.我最初考虑使用Perl哈希(存储在磁盘上)来翻译我自己的解决方案,但后来我遇到了一个CPAN模块,它看起来像我想做的那样(i18n).

有没有人在Perl中有国际化经验(特别是i18n CPAN模块)?i18n模块是多语言支持的首选方法还是我应该重新考虑自定义解决方案?

谢谢

perl cgi localization internationalization

13
推荐指数
2
解决办法
5415
查看次数

在apache中将REMOTE_ADDR设置为X-Forwarded-For

在Apache坐在反向代理(例如Squid)后面的情况下,cgi环境变量REMOTE_ADDR获取代理的地址而不是客户端.

但是,代理将设置一个名为X-Forwarded-For包含客户端原始IP地址的标头,以便Apache可以看到它.

问题是,我们如何让Apache替换标头中REMOTE_ADDR的值,X-Forwarded-For以便所有Web应用程序都能透明地看到正确的地址?

apache cgi http

13
推荐指数
3
解决办法
5万
查看次数

让用户上传Python脚本以便执行

我知道让任何匿名用户上传任何类型的文件都是危险的,特别是如果它的代码.但是,我有一个想法让用户上传自定义AI脚本到我的网站.我将提供模板,以便用户可以在我用Python编写的在线网络游戏中与其他AI竞争.我要么需要一个解决方案来确保用户不会破坏任何其他文件或通过他们上传的脚本或客户端执行游戏的解决方案注入恶意代码.有什么建议?(我正在寻找一种适用于我的Python脚本的解决方案)

python cgi

12
推荐指数
3
解决办法
880
查看次数

如何从我的网址中隐藏"cgi-bin",".py"等?

全新的网页设计,使用python.启动Apache并运行,测试在cgi-bin目录下运行的python脚本.当我明确输入网址时获得有效结果:".../cgi-bin/showenv.py"

但我不希望URL看起来那样.例如,在stackoverflow中,显示在我的地址栏中的URL永远不会有杂乱的细节显示用于运行它们的脚本.他们没有cgi-bin,.py等扩展.我怎么做?

编辑:感谢您的回复,每一个都很有帮助,很多东西需要学习.我现在正在使用URL重写; 文档中的示例看起来非常接近我实际想要做的事情.但是我致力于python,因此将不得不关注WSGI.

python cgi

12
推荐指数
2
解决办法
9008
查看次数

mod_php和cgi php脚本有什么区别?

mod_php和cgi php脚本有什么区别?

我的意思是,为什么更好(是吗?)使用mod_php而不是简单的PHP脚本,将它们作为CGI运行?

谢谢

php webserver cgi

12
推荐指数
1
解决办法
4853
查看次数

使用python将图像输出到html

我有一个从python生成的网页,它可以正常工作,使用:

print 'Content-type: text/html\n\n'
print  ""                                 # blank line, end of headers
print '<link href="default.css" rel="stylesheet" type="text/css" />'
print "<html><head>"
Run Code Online (Sandbox Code Playgroud)

我想在此网页上添加图片,但是当我这样做时:

sys.stdout.write( "Content-type: image/png\n\n" + file("11.png","rb").read() )
print 'Content-type: text/html\n\n'
print  ""                                 # blank line, end of headers
print '<link href="default.css" rel="stylesheet" type="text/css" />'
...
Run Code Online (Sandbox Code Playgroud)

我得到的只是图像,如果我将图像代码放在我的html /文本标题下面,我得到的只是图像中的文字,即:

<Ï#·öÐδÝZºm]¾|‰k×®]žòåËÛ¶ÃgžyFK–,ÑôéÓU½zuIÒ}÷ݧ&MšH’V¯^­?üð¼1±±±zýõ×%IñññÚºu«*W®¬wß}W.—K3gÎÔÌ™ÿw‹Ú””I’¹w¤¥hdÒd½q÷X•Šˆ²m¿þfïÞ½*]º´éÈs;¥¤¤Ø¿ILLÔˆ#rÊ
Run Code Online (Sandbox Code Playgroud)

另外,如果我尝试:

print "<img src='11.png'>"
Run Code Online (Sandbox Code Playgroud)

我在浏览器中看到一个损坏的图像,直接浏览图像会产生500内部服务器错误,我的apache日志说:

8)Exec format error: exec of './../../11.png' failed Premature end of script headers: 11.png 
Run Code Online (Sandbox Code Playgroud)

html python cgi http-headers

12
推荐指数
1
解决办法
3万
查看次数

在Apache2中执行Python脚本

我正在尝试使用Apache执行Python程序.但是,Apache只会提供文件而不会实际执行它.该文件的权限是r/w/x,它是在/var/www.我将发布后面的内容httpd.conf和程序代码.我也尝试将python脚本作为.cgi文件运行但是也没有用.我也将这些mod_pythonmod_wsgi模块加载到apache中.

Python示例:

#!/usr/bin/python

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain\r\n\r\n"
print

print "Hello World!"
Run Code Online (Sandbox Code Playgroud)

httpd.conf中:

AddHandler cgi-script .cgi .pl
AddHandler python-program .py
Run Code Online (Sandbox Code Playgroud)

我知道它是一个小的httpd.conf文件但是当我安装apache时,文件中没有任何内容.我还要提一下,这只是为了让我学习在apache中运行python的基础知识.它不适合生产.谢谢您的帮助!

编辑

我正在使用的操作系统是Ubuntu 10.04,apache的版本是2.我有python版本2.6,它在#!/usr/bin/env python调用时自动使用.
我收到两个主要错误,第一个是即使文件和文件夹的权限是777,也找不到文件.日志中的错误是

[Sun Feb 05 13:29:44 2012] [error] [client 192.168.1.3] File does not exist: /var/www/poit-0.1
Run Code Online (Sandbox Code Playgroud)

这个错误是针对我没写的不同的python脚本.奇怪的是,当从浏览器窗口访问时,文件显示在文件夹的索引中.但是,当我导航到该文件时,我收到上述错误.

我得到的另一个错误是标头的过早结束.错误如下:

[Sun Feb 05 12:10:19 2012] [error] (8)Exec format error: exec of '/var/www/pyth.py' failed
[Sun Feb 05 12:10:19 2012] [error] [client 192.168.1.3] Premature end …
Run Code Online (Sandbox Code Playgroud)

python apache cgi

12
推荐指数
1
解决办法
5万
查看次数

是否可以在Linux中将数据写入自己的stdin

我想从IDE调试我的cgi脚本(C++),所以我想创建一个"调试模式":从磁盘读取文件,将其推送到自己的stdin,设置一些环境变量,对应这个文件并运行其余的Web服务器调用的脚本.是否可能,如果是,那我该怎么做?

c++ linux cgi

12
推荐指数
1
解决办法
6970
查看次数

标准库中的所有内容都会将字符串视为Python 3.0中的unicode吗?

我对Python(从3.0)基于unicode的标准库的行为方式感到有些困惑.诸如CGI和urllib之类的模块是否会使用unicode字符串,还是会使用新的"字节"类型并只提供编码数据?

python string unicode cgi python-3.x

11
推荐指数
2
解决办法
429
查看次数

为什么Perl说()没有在FCGI模式中附加换行符?

Perl在FCGI模式下的函数我有一个奇怪的行为.新线不会被追加.为什么会这样?

示例代码:

#!/usr/bin/perl -wT
use strict;
use warnings;
use utf8;
use feature qw( say );
use FCGI ();
use CGI qw( header );
my $cnt = 0;
my $req = FCGI::Request();
while ( $req->Accept() >= 0 ) {
    $cnt++;
    print header( -type => 'text/plain', -charset => 'utf-8' );
    say "Hello, world #$cnt";
    print "\n";
    print "$$\n"
    print 'Test 1234';
}
Run Code Online (Sandbox Code Playgroud)

预期结果(以及通过控制台的实际结果):

Content-Type: text/plain; charset=utf-8

Hello, world. #1

6712
Test 1234
Run Code Online (Sandbox Code Playgroud)

通过Apache/FCGI的实际结果:

Content-Type: text/plain; charset=utf-8

Hello, world. #3
6709
Test 1234 …
Run Code Online (Sandbox Code Playgroud)

apache perl cgi fastcgi

11
推荐指数
1
解决办法
283
查看次数