Featured image of post HTTPの改行について

HTTPの改行について

CGIのヘッダーを自力で出力していたときに気にした記憶があった

CGIのヘッダーを自力で出力していたときに気にした記憶があった。

\nは環境依存なので、\015\012とか使った方がいい

[はてなブックマーク - Charsbar::Bookmark]

Charsbarさんの言うとおりでしょうね。 NanoAのextlibにも入っているCGI::Simpleでは、改行コードをOSに応じて定義しているようです。

SEE ALSO

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# Define the CRLF sequence.  You can't use a simple "\r\n" because of system
# specific 'features'. On EBCDIC systems "\t" ne "\011" as the don't use ASCII
sub crlf {
my ( $self, $CRLF ) = @_;
$self->{'.crlf'} = $CRLF if $CRLF;    # allow value to be set manually
unless ( $self->{'.crlf'} ) {
my $OS = $^O
|| do { require Config; $Config::Config{'osname'} };
$self->{'.crlf'}
= ( $OS =~ m/VMS/i ) ? "\n"
: ( "\t" ne "\011" ) ? "\r\n"
:                      "\015\012";
}
return $self->{'.crlf'};
}

NanoAはともかく、CGI::ExceptionManagerのようにCPANにアップしてあるものは、この辺もしっかり修正してもらう方が良いでしょうね。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。