脚本头格式错误。坏的头部 = <!DOCTYPE html>。

15
我在一个perl脚本中收到了以下服务器错误:

来自脚本的格式错误头部。坏的头部=: youtube_perl.pl,

这是我的源代码:
#!"C:\XAMPP\perl\bin\perl.exe" -T

use strict;
use warnings;

use CGI;
use CGI::Carp qw/fatalsToBrowser/;
use WWW::Mechanize;

my $q = CGI->new;

my $url = 'http://www.youtube.com';

my $mechanize = WWW::Mechanize->new(autocheck => 1);

$mechanize->get($url);

my $page = $mechanize->content();

print $page;
2个回答

29

我想通了。在尝试打印页面之前,必须添加以下内容:

print "Content-type: text/html\n\n";

我猜想在Perl中,如果没有事先定义头部信息,是无法打印HTML页面的。


3
可以用Perl打印它们,但这些将不是有效的HTTP响应。因此,如果你想通过HTTP传输由Perl打印的HTML页面,你需要实际打印一个完整的HTTP响应,这与Perl无关。 - DVK
7
当然,Perl可以打印没有头部的HTML页面!但是你不能编写没有打印头部的CGI脚本。更好的方法是:print $q->header();。请参阅 perldoc CGI - mscha
1
在HTTP通信中,应该使用\x0D\x0A作为EOL而不是\n。HTTP规定行应以CR-LF终止,而\n是当前环境的行结束标记,因为你正在Windows上运行,所以\n恰好是\x0D\x0A - mu is too short
谢谢!这个有效!奇怪的是我们的旧脚本在没有这个的情况下也能工作,但有一天突然停止了。可能是服务器更新导致的。不确定。有什么想法吗? - Xonatron
在Bash/Shell中,\n符号在echo命令中不被解释,但echo会自动添加\n,因此需要再使用一个echo命令来输出。 - FantomX1

3
print "Content-type: text/html\n\n";

如果不使用\n\n,它将不会打印任何内容,而会出现以下错误:

脚本的头部不正确

请查看您的错误日志文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接