Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 为什么我需要显式输出IIS的HTTP头而不是Apache?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试设置apache而不是IIS,因为 IIS needlessly crashes一直都是,并且能够自己检查源代码而不是我们所有人编辑一个常见的结帐都会很好.

在IIS中,我们必须在每个文件的开头执行类似的操作:

use CGI;
my $input = new CGI();
print "http/1.0 200 OK";
print $input->header();

而对于apache,我们必须离开200 OK线.以下两者兼容:

use CGI;
my $input = new CGI();
print $input->header('text/html','200 OK');

有谁能解释为什么?而且我的印象是CGI模块应该自动找出这些细节……

谢谢!

更新:brian是对的,nph解决了IIS的问题,但它仍然在Apache中被打破.我不认为在整个代码中都有条件,所以我会坚持使用最后一个方法,它可以使用和不使用Nph.

解决方法

http和CGI是不同的东西. Perl CGI模块调用它所做的“http头”,但它实际上只是服务器在返回客户端之前修复的CGI头.它们看起来很相似,这就是为什么人们会感到困惑,以及为什么CGI.pm文档无法通过将它们称为错误的东西来帮助它们.

Apache修复了CGI标头,使其成为http标头,包括添加http状态行以及可能需要的任何其他内容.

如果您的网络服务器没有为您修复标头,那么可能需要一个“未解析的标头”,您负责整个标头.要在CGI.pm中执行此操作,您必须将-nph选项添加到对标头的调用中,并且您必须自己创建完整标头,包括Expires和Last-Modified等标头.请参阅Creating a Standard HTTP Header下的文档.您可以通过三种方式打开NPH:

use CGI qw(-nph)

CGI::nph(1)

print header( -nph => 1,...)

您使用的是旧版本的IIS吗? CGI.pm用于为IIS自动打开NPH功能,但现在该行已在CGI.pm的源代码中注释掉:

# This no longer seems to be necessary
# Turn on NPH scripts by default when running under IIS server!
# $NPH++ if Defined($ENV{'SERVER_SOFTWARE'}) && $ENV{'SERVER_SOFTWARE'}=~/IIS/;

大佬总结

以上是大佬教程为你收集整理的perl – 为什么我需要显式输出IIS的HTTP头而不是Apache?全部内容,希望文章能够帮你解决perl – 为什么我需要显式输出IIS的HTTP头而不是Apache?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。