大佬教程收集整理的这篇文章主要介绍了perl – 为什么我需要显式输出IIS的HTTP头而不是Apache?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在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.
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,请注明来意。