cgic リダイレクト解決
2007/10/27
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を理解していないので、妙なところで嵌ってました。
まぁ、これでダサい完了画面ともおさらばです。