我正在尝试获取一个将适用于Apache、IIS 6和IIS 7的头文件。让我们简单地说,这并不像我想的那么容易:-)
不管怎么说,这个问题与NPH有关。在我们的代码(最初为IIS 6编写)中,我们有
use CGI qw(:standard);
print "HTTP/1.0 200 OK\n";
print header;在每个cgi脚本的顶部;我读到这是如何告诉IIS您想要NPH。
Apache使用文件名来查看输出是否为nph (nph-必须是文件名的开头),因此我所做的工作(在IIS 6和Apache中都有效)如下:
use CGI qw(:standard);
print header('text/html', '200 OK');有趣的是,IIS 7似乎需要NPH,所以如果我不这样做的话
use CGI qw(:standard -nph);或
print "HTTP/1.0 200 OK\n";
print header('text/html', '200 OK'); #parameters are apparently optional 浏览器试图对文件做一些奇怪的事情,因为它没有得到mimetype。
还要注意: IIS 6和7可以不打印任何头,但是Apache不喜欢这样做。
不管怎样,现在最好的办法就是
use CGI qw(:standard);
print header('text/html', '200 OK');不知何故在IIS 7工作,有人知道我怎么做到的吗?我不知道我们的服务器配置的所有细节,但是如果您告诉我如何获得您可能需要的任何细节,我可以这样做。
不管怎么说都谢谢!
发布于 2008-12-02 03:11:35
Brian (和其他人)已经告诉我写一个子例程来做正确的事情。希望这能帮到别人!
sub header {
return (($ENV{PERLXS})?"HTTP/1.0 200 OK\r\n":"").CGI->header(@_);
}发布于 2008-12-02 02:31:21
我只需创建一个子例程,根据服务器执行正确的操作。你知道你在每一种情况下都要做什么,所以在这种情况下就去做吧。
另一种选择是修补CGI.pm,通过查看服务器类型来正确设置其$CGI::NPH变量。CGI.pm已经具备了基本知识。一旦你修复了它,提交一个补丁。
祝你好运:)
https://stackoverflow.com/questions/332809
复制相似问题