cgic リダイレクト解決

cgicでのリダイレクトのレスポンスがブラウザまで帰ってないんじゃないかとう疑問(http://d.hatena.ne.jp/smeghead/20071026/cgic)についてです。


コメント欄で、discypusさんにアドバイスもらって ieHTTPHeaders でヘッダ情報を見てみたところ、POSTのリクエストに対するリダイレクトのレスポンスは、ブラウザまで届いていないようでした。POSTのリクエストのレスポンスは、Locationヘッダで指定したURLが、200 OKで帰ってました。

サーバ側でapacheがどう返しているのかを見るために、tcpdump -X port 80 で見てみたところ、リダイレクトを示すレスポンスが返していませんでした。

ヘッダの調査をしていて、302が帰るはずだよなと思い、cgiでリダイレクト指定をする時に、以下のようにしてみたところ、期待通りの動作(ブラウザまでLocationヘッダを返す)をさせることができました。

printf(cgiOut, "Status: 302 Temporary Redirection\r\n");
cgiHeaderLocation("/starbug1/index.cgi");

Statusヘッダを返さないと、apacheが勝手にRedirect処理の面倒を見てくれちゃってる感じでした。ん~、経験でしか、CGIを理解していないので、妙なところで嵌ってました。

まぁ、これでダサい完了画面ともおさらばです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください