• 締切済み

CGI:method="post"でもGETになる

CGIで標準入力によりフォームデータを取得できないため、環境変数%ENV内の値を 調べましたところ、入力フォーム(html)のformタグでmethod="POST"と明示しているにも 拘らず、REQUEST_METHODの値がGETになっており、POST用のCONTENT_LENGTHも GET用のQUERY_STRINGも共に空になっております。 htmlでmethod="GET"と指定した場合には、REQUEST_METHODの値は正しくGETになり QUERY_STRINGからフォームデータを取得できます。 同じCGIをPC上のApache2.4でテストした結果、REQUEST_METHODはhtmlのmethod=~で 指定した通り正しくPOSTまたはGETとなり、それぞれフォームデータを 取得できることを確認いたしております。 この点についてプロバイダに問合せいたしましたが、サポート対象外ということで、 回答を得ることができませんでした。 このような現象の原因について、お心当たりのある方がおられましたら、 ご教示いただけないでしょうか、お伺いいたします。 (1)ホスト動作環境 a.CGIサーバ:Apache b. perl 5.10系 (2)PC動作環境 a.OS: Windows 7 b.ブラウザ: Internet Eexplorer 11 c.CGIサーバ: Apache 2.4 d. Activeperl 5.20

みんなの回答

回答No.2

> 残念ながらwebサーバーの設定につきましては、殆んど知りませんので あ、いやいや。説明不足ですいません。 サーバー上のそのCGIを置いてあるディレクトリか その上位のディレクトリの中に、 ”.htaccess”というファイルがもしあるならば、 その中でリダイレクトするような記述をしていないでしょうか?  もしくは、受け取ったCGI自体で処理しないでLocationヘッダを発行して 別のCGIに転送するようなことをしていないでしょうか? ・・・ということなのですが。

krik1
質問者

お礼

度々おそれいります。 (1).htaccess  プロバイダのCGIサーバの解説ページにはhtaccessに関する記述がありませんので、おそらくユーザからは参照できないのだと思います。 実際、FFFTPでユーザCGIの上位のディレクトリには進めません。 尚、PC上のApacheでは、httpd.confを使っております。 (2)別のCGIへの転送  フォームから制御を渡したCGIだけで処理を行っており、転送はしておりません。 フォームデータが取得できないのに気づいてから、入力データをブラウザに表示するだけのごく簡単なCGIで%ENVを調べてきました。 どうもCGIサーバに関してプロバイダの提供する情報が不足しているように思えてなりません。

回答No.1

Webサーバー側の設定(例えば.htaccess)で、リダイレクト指定して  その結果、GETに変換されているとか?

krik1
質問者

お礼

早速ご回答いただき、お礼申し上げます。 残念ながらwebサーバーの設定につきましては、殆んど知りませんので、 ひとまずお礼のみ述べさせていただきます。

関連するQ&A