2011-01-25 21 views
9

Tôi nhận được lỗi máy chủ sau trên một kịch bản perl:tiêu đề không đúng định dạng từ tập lệnh. Xấu header = <! DOCTYPE html>

bị thay đổi tiêu đề từ kịch bản. Xấu header =: youtube_perl.pl,

Đây là mã nguồn của tôi:


#!"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; 

Cảm ơn trước!

Trả lời

15

Đã tìm ra. Đã thêm những điều sau đây trước khi tôi cố gắng in trang:

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

Tôi đoán perl không thể in trang html mà không xác định tiêu đề đầu tiên.

+3

@ user589294 - Không. Perl có thể in chúng. Nhưng chúng sẽ không là phản hồi HTTP hợp lệ. Vì vậy, nếu bạn muốn trang HTML của bạn được in bởi Perl để được vận chuyển qua HTTP, bạn cần phải thực sự in một phản hồi HTTP đầy đủ - không có gì để làm với Perl – DVK

+7

Tất nhiên Perl có thể in các trang HTML mà không cần tiêu đề! Tuy nhiên, bạn không thể viết một kịch bản CGI mà không cần in một tiêu đề. Tốt hơn là: 'in $ q-> tiêu đề();'. Xem [perldoc CGI] (http://perldoc.perl.org/CGI.html). – mscha

+1

Bạn nên sử dụng '\ x0D \ x0A' thay vì' \ n' làm EOL khi nói HTTP. HTTP chỉ định rằng các dòng phải được kết thúc bằng CR-LF trong khi '\ n' là điểm cuối của dấu dòng cho môi trường hiện tại của bạn,' \ n' chỉ xảy ra là '\ x0D \ x0A' cho bạn bởi vì bạn đang chạy trên Windows . –

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

Sử dụng \n\n không có điều này nó sẽ không in bất cứ điều gì nó sẽ cung cấp:

dạng sai tiêu đề từ kịch bản lỗi

Trong log file lỗi của bạn.

Các vấn đề liên quan