首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得与IIS 6、7和Apache一起工作的标头?

如何获得与IIS 6、7和Apache一起工作的标头?
EN

Stack Overflow用户
提问于 2008-12-02 01:56:10
回答 2查看 613关注 0票数 1

我正在尝试获取一个将适用于Apache、IIS 6和IIS 7的头文件。让我们简单地说,这并不像我想的那么容易:-)

不管怎么说,这个问题与NPH有关。在我们的代码(最初为IIS 6编写)中,我们有

代码语言:javascript
复制
use CGI qw(:standard);

print "HTTP/1.0 200 OK\n";

print header;

在每个cgi脚本的顶部;我读到这是如何告诉IIS您想要NPH。

Apache使用文件名来查看输出是否为nph (nph-必须是文件名的开头),因此我所做的工作(在IIS 6和Apache中都有效)如下:

代码语言:javascript
复制
use CGI qw(:standard);
print header('text/html', '200 OK');

有趣的是,IIS 7似乎需要NPH,所以如果我不这样做的话

代码语言:javascript
复制
use CGI qw(:standard -nph);

代码语言:javascript
复制
print "HTTP/1.0 200 OK\n";

print header('text/html', '200 OK'); #parameters are apparently optional 

浏览器试图对文件做一些奇怪的事情,因为它没有得到mimetype。

还要注意: IIS 6和7可以不打印任何头,但是Apache不喜欢这样做。

不管怎样,现在最好的办法就是

代码语言:javascript
复制
use CGI qw(:standard);
print header('text/html', '200 OK');

不知何故在IIS 7工作,有人知道我怎么做到的吗?我不知道我们的服务器配置的所有细节,但是如果您告诉我如何获得您可能需要的任何细节,我可以这样做。

不管怎么说都谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-12-02 03:11:35

Brian (和其他人)已经告诉我写一个子例程来做正确的事情。希望这能帮到别人!

代码语言:javascript
复制
sub header {
    return (($ENV{PERLXS})?"HTTP/1.0 200 OK\r\n":"").CGI->header(@_);
}
票数 0
EN

Stack Overflow用户

发布于 2008-12-02 02:31:21

我只需创建一个子例程,根据服务器执行正确的操作。你知道你在每一种情况下都要做什么,所以在这种情况下就去做吧。

另一种选择是修补CGI.pm,通过查看服务器类型来正确设置其$CGI::NPH变量。CGI.pm已经具备了基本知识。一旦你修复了它,提交一个补丁。

祝你好运:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/332809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档