2012-04-15 5 views
0

別の場所にhttp 302レスポンスを返し、そのレスポンスにカスタムヘッダを追加するperlページを作成しようとしています。perlを使って302レスポンスにレスポンスヘッダを追加する

HTTP/1.1 302 Moved 
Date: Sun, 15 Apr 2012 10:59:02 GMT 
Server: Apache 
Location: http://www.google.com 
Content-Length: 396 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=iso-8859-1 
CUSTOM_HEADER: CUSTOM_VALUE 

iはCGIを使用してみました: ので、私の希望HTTPレスポンスは次のようなものでなければなりません

#!/bin/perl 

use strict; 
use APR::Request::Apache2; 
my $r = shift; 
$r->content_type('text/html; charset=utf-8'); 
$r->headers_out()->add("CUSTOM_HEADER", "CUSTOM_VALUE"); 
$r->headers_out()->add("Location", "http://www.google.com"); 
$r->status(302); 

と私はグーグルませんが、何のcustom_headerをするために302応答を得ますか。一度私は$r->status(200);によって200にステータスを変更すると、私はCUSTOM_HEADERを取得します。 これはどういう意味ですか? 302レスポンスに私のヘッダを追加するにはどうすればいいですか?

答えて

2

使用$r->err_headers_out->setまたは$r->err_headers_out->add

my $r = shift; 

$r->content_type('text/html; charset=utf-8'); 
$r->err_headers_out->set(Location => "http://www.google.com"); 
$r->status(302); 
+0

感謝。ところで、なぜ302はエラーレスポンスと見なされますか? – Oded

+0

@Oded - 良い質問です。私はあなたのポイントを持って:)ステータスコード1xxは情報、2xxの成功、3xxリダイレクト、4xxクライアントエラーと5xxサーバーエラーです。したがって、302はエラーではなく成功ではありません。だからそれは何ですか?この場合、このモジュールと機能はエラーです。理由を聞かないでください:) –

2

err_headers_out()を使用してください。これらはエラーやリダイレクト時にも印刷されます。あなたの助けのための

関連する問題