CGIでHTTPエラー406が発生する

このQ&Aのポイント
  • webサーバをレンタルサーバから移行した際に、CGIの一部でエラーが発生します。
  • 問題の原因はshift-jisの漢字コードで、httpdの設定を変更する必要があります。
  • 解決方法としては、別のリンク先を表示することやインターネット上の情報を検索することが挙げられます。
回答を見る
  • ベストアンサー

CGIで、HTTP エラー 406が出る

ここで良いのかどうかと迷ったのですが、webサーバを立ち上げて、今までレンタルサーバに入っていたものを移していました。 ところが、今まで動いていたCGIの一部でエラーが発生します。 いろいろ調べた結果下記のような症状があることが解りました。 ----test.cgiここから------ #!/usr/bin/perl print"Content-type: text/html\n\n"; print"ok"; exit; ----test.cgiここまで------ 上の様なCGIを呼び出すのですが、 <form method="post" action="test.cgi"> <input type="submit" value="戻る" name="return"> </form> これで、以下のエラーが出ます ---------------------------------------------- リソースを表示できません 検索中のリソースは、このブラウザで開くことができません。 次のことを試してください: 別のリンク先を表示するには、[戻る] ボタンをクリックしてください。 [検索] ボタンをクリックして、インターネット上の情報を検索してください。 HTTP エラー 406 - 受信不可 Internet Explorer ---------------------------------------------- ただし、nameを使わない場合 <form method="post" action="test.cgi"> <input type="submit" value="戻る"> </form> valueが"更新"の場合、 <form method="post" action="test.cgi"> <input type="submit" value="更新" name="return"> </form> などは正常にcgiを行います。 多分漢字コードがshift-jiだから起こり、httpdに何か設定をしてやれば良いのではないかと思いますが、何をしたら良いのかが解りません。 ただし、諸般の事情によりshift-jisは変更できません。 よろしくお願いします。 FedoraCore4 perl-5.8.6-24 httpd-2.0.54-10.3 インストールは、FedoraCore4のサーバ最小設定でインストールして、後はyumでインストールしました。

質問者が選んだベストアンサー

  • ベストアンサー
  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

まずはapacheのログを見ることです。 /var/log/httpd/error.log を見て原因を探って下さい。

fumufumu_2006
質問者

お礼

ありがとうございました。 無事mod_securityの設定をして、問題解決しました。

fumufumu_2006
質問者

補足

ありがとうございます。 そうですね、今までエラーログなど見たことなかった。 [Sat Jun 10 10:43:52 2006] [error] [client ???.???.???.???] mod_security: Access denied with code 406. Error parsing POST parameters: Error normalising parameter value: Invalid Unicode encoding: not enough bytes [severity "EMERGENCY"] [hostname "www.fumufumu.com"] [uri "/test.cgi"] こんなのが出てました。mod_securityが文句を言っているようです。 入れた覚えがないのですが、 mod_security-1.9.4-1.fc4 が入っています。 これは・・・止めても良い物でしょうか。

関連するQ&A

  • submitではなくbuttonで送信

    事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。

  • javascriptでCGIを実行するには

    htmlタグ <form method="post" action="・・・/cgi-bin/gogo.cgi"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> 上記で送信ボタンを押すとcgi側でnameを受け取れますが、 以下の場合はcgiは動作するのですが、nameを受け取れません、 受け取れる方法を教えてください。 <script type="text/javascript" language="javascript"> <!-- function gogo(){ document.write('<img src="・・・/cgi-bin/gogo.cgi">'); } // --> </script> </head> <body> <form method="post" action="javascript:gogo()"> <input type="text" name="name" size="20" value=""> <input type="submit" value="送信"> </form>

  • javascriptからCGIへの値渡し

    cookieは利用しない方向で考えています。 HTML上のdocument.form01.のsubmitが押下されたら一度手入力されたデータ(userinput)を加工し、 別のフォームform02.valueに格納してtest.cgiにPOSTで投げる動作を期待しています。 下記だとページ遷移無しで一時的な格納まで確認しましたが CGIへの送信が機能していないようです。 どの様にすべきでしょうか? [html] <script type="text/javascript"> <!-- function onSubmit() { document.form02.sendform.value = '\"' + document.form01.userinput.value + '\"'; document.form02.submit(); } --> </script> <body> <form name="form02" method="POST" action="test.cgi"> <input type="hidden" name="sendform" value=""> </form> <form method="POST" action="" name="form01"> <input type="text" name="userinput"> <input type="submit" value"送信" onclick="return onSubmit();"> </form> </body> </html>

  • 複数FORMの一括実行について

    通常であれば同一サイト内に下記のソース(フォーム)が入るのですが、 これを改良しサイト上で希望の送信先をチェックボックスで選択し一回の操作で複数のcgiを実行したく思います。 良いcgiがあれば教えてください。 又は改造ができるcgi、修正方法を分かりましたらお教え願います。 サイトA <form action="https://aaa.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトB <form action="https://bbb.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form> サイトC <form action="https://ccc.cgi" method="post"> <input type="hidden" name="名前" value="name"> <input type="hidden" name="メール" value="mail"> <input name="Submit" type="submit" value="送信"> </form>

    • 締切済み
    • CGI
  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • 同一ページで複数のformを扱う場合

    同一のページ内にhiddenでIDを振った削除ボタンを用意しクリックされたIDを取得するにはどのようにすれば良いでしょうか? <form action="/test.php" name="1" method="post"> <input type="hidden" name="id" value="1" /> <input type="submit" name="delete" value="削除"> </form> -- 省略 <form action="/test.php" name="10" method="post"> <input type="hidden" name="id" value="10" /> <input type="submit" name="delete" value="削除"> </form> formにnameを振ってみても最後のIDがPOSTされてしまいます。

    • 締切済み
    • PHP
  • HTMLのFORMからCGIを呼び出すとエラー

    HTMLにショッピングカートを設置しています。HTTPDを起動して自宅サーバー環境でテストしたところ、全て正常に稼動しています。ところが同じソースを実際のサーバーにアップしたところ、リンクからCGIプログラムを呼び出すと問題なく動作するのですが、formから呼び出すと動作しません。 動作しないとはブラウザーによって振る舞いが違うのですが、たとえばFirefoxでは「接続がリセットされました」、IEでは「IEではこのページは表示できません」などとなります。FORMの呼び出し行を1行削除するとエラーにならない事までは確認したのですが、削除してしまうとそもそもデータが変更されなくなります。何をどう書き換えれば自宅サーバー環境と同じようにCGIが動作するのか、アドバイスをお願いします。 1:エラーとなるFORMの書き方 <form name="form1" method="post" action="../../cgi-bin/cart/shop.cgi"> <input name="action" type="hidden" id="action" value="in_goods"> -中略ー <input name="kazu" type="hidden" id="kazu" value="1"> <input name="imageField" type="image" src="../../images/kartbtm.gif" border="0"> </form> 2:エラーとならないFORMの書き方 下記の1行をはずす。 <input name="action" type="hidden" id="action" value="in_goods"> ただし、この場合カートに商品を入れてもデータベースが更新されない。 ローカルの環境ではカートに商品を入れてから買い物が終了しメールを送信するところまで全て正常に動作しております。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • </form>タグを使用すると強制的に改行されてしまいます・・・

    <FORM action="http://log.cgi" method="post"> <INPUT type="submit" value="b1"></FORM> <FORM> <FORM action="http://log2.cgi" method="post"> <INPUT type="submit" value="b2"></FORM> とすると,強制的に改行されてしまい何とか,ボタンを,並列することは出来ないでしょうか?

    • ベストアンサー
    • HTML
  • POSTをする際にname指定したい。

    まずは下のソースを見てください。 <!--ここから--> <form action="./test.cgi#sample" method=post> <input type=hidden name=namae value="山田"> <input type="submit" name=mode2 value="送信"> </form> <a name="sample">ここにジャンプ</a> <!--ここまで--> 例えば上記のようなソースをtest.cgiというファイルに書きました。 submit後、sampleにジャンプするようにしました。 通常は上のソースで問題なくsampleに戻ってくるのですが、 しかしながら、DcomoのN904だけがtest.cgiにパラメーターが引き渡されないようなのです。 いわゆるnamaeの値である山田がわたされないということです。 そもそも<form action="./test.cgi#sample" method=post> という方法は間違っているのでしょうか? ご教授よろしくお願いいたします。

    • 締切済み
    • CGI
  • VBAでIEを操作submit処理について

    ExcelVBAでIEを操作する処理について勉強中です。 formで、nameが定義されておらず、submitが複数(4つ)ある場合です。 HTMLが下記記載の場合で、submit”A”をクリックしたいです。 <form action="XXXX/admin.cgi" method=POST><td> <input type="submit" value="A"></td></form> <form action="XXXX/admin.cgi" method=POST><td> <input type="submit" value="B"></td></form> <form action="XXXX/admin.cgi" method=POST><td> <input type="submit" value="C"></td></form> <form action="XXXX/admin.cgi" method=POST><td> <input type="submit" value="D"></td></form> VBAでのsubmitの記述を下記で試してみたのですが、うまくクリックできません。 ObjIE.document.forms(0).Action = "XXXX/admin.cgi" ObjIE.document.forms(0).submit どのように変えたらよいのでしょうか。。。 ご教授お願い致します。