• ベストアンサー

POSTで送信するとエラーになる

 ボタンでHPに飛ばしているのですが、エラーになる場合があって困っています。  コードは以下の通りです。    <FORM action="http://www.xxx.yy.zz/" method="POST">     <INPUT type="submit" value="HPへ">    </FORM>  指定したURLによってエラーになるところとならないところがあるのですが、これはサーバ内のどこの設定によるものなのでしょうか?  (試しにgooやYahooを指定するとOKなのですが、googleやlycosはダメのようです。  エラーの場合、「400 BadRequest」や「HTTP 405 - リソース未許可」などが出ます。  しかもlycosでは、自社エラーページを表示しているのですが、どういう設定なのでしょう?)  現行ではmethod="GET"としている(これなら上記エラーは出ない)のですが、これだとURLの後ろに「?」がついてしまって、これによってエラーになってしまうHPがまれにあって、これまた困っています。  (JavaScriptは使用不可で、文字リンクもダメという方針なので、画像リンクしかないかなぁと思っているのですが。)  もしJavaScriptも画像も使わずに、ボタンで、URLに?を出さない方法があったら、是非教えてください。  (1番知りたいのは、↑これです) 以上よろしくお願い致します。

  • CGI
  • 回答数5
  • ありがとう数2

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

  • ベストアンサー
  • honiyon
  • ベストアンサー率37% (331/872)
回答No.5

こんにちは、honiyonです。  POSTを、index.htmlに対して試してみました。  結果は、   The requested method POST is not allowed for the URL /index.html.  という事で、察するに *.htmや、*.htmlに対しては POSTメソッドは門前払いという事になりそうです。 CGIに対してしかダメという事になりそうですね~。  使用したサーバーは、Linux + Apache です。  送信すべきデータがある/ない以前の問題でしたね(^^;  今回のケースではPOSTメソッドは無理、という事になりそうですね。 少なくともApacheの設定で、「POSTを全てのケースで許可」というのはなかったと思います。 他のWWWサーバーで、HTMLに対してもPOSTを許可してくれるものがあればよいのですが(^^;  参考になれば幸いです(..

leaz024
質問者

お礼

なるほど、やはりPOSTがいけないんですね。 まぁ遷移先のサーバの設定を変えられるハズもないので、大人しく画像リンクにすることにします。 いろいろ調べていただき、本当にありがとうございました。

その他の回答 (4)

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.4

こんにちは、honiyonです。  なるほど、そのような理由で JavaScriptがダメだったのですね。  かなり強引で美しくない方法(笑)ですが、こんな事考えてみました。  <FORM action="http://www.xxx.yy.zz/jump.cgi" method="GET">   <INPUT type="submit" value="HPへ">  </FORM>  この jump.cgi は、目的のページ(HPのURL)への location: を吐き出すだけです。  これなら間違いないでしょう。  ・・・それと今ふと気づいたのですが、ひょっとして POST出来ないのは、  送信すべきデータがないからではないのでしょうか?  <FORM action="http://www.xxx.yy.zz/" method="POST">   <INPUT name="dummy" type="hidden" value="dummy">   <INPUT type="submit" value="HPへ">  </FORM>  あくまで推測ですが。 時間がなくてこちらでは試せていません(^^;スイマセン  参考になれば幸いです(..

leaz024
質問者

補足

遅くなって、すみません。 ダミーのデータは前に試したのですが、やっぱりダメでした。 Location: を使うというのは思いつきませんでしたが、リンクで軽く飛べるものを、わざわざCGIにするというのは、多分社内では通らないでしょうね。 やっぱりHTMLのみでは、難しそうですね。 あと、このPOSTだと拒否(?)する設定っていうのが、どのようにされているのか分かる方、いませんか?

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.3

こんにちは、honiyonです。  先ほどの私の方法でダメとなると、これしかないかもしれません。 <FORM> <input type=button value="HPへ" onclick='location.href="http://www.foo.co.jp/"> </FORM>  JavaScriptとなってしまいますが...(^^;  参考になれば幸いです(.. 

leaz024
質問者

補足

 一応その辺は専門なので分かるのですが、何十万もユーザーがいると、うかつに「JavaScriptでしか遷移できない」というものは作れないんですよ。とほほ・・・

  • itohh
  • ベストアンサー率45% (210/459)
回答No.2

こんにちは。itohhといいます。 まずはじめに。 他社のHPに勝手に、POSTやGETで飛ぶのは、止めてください。 最悪の場合、そのHPのWebサーバが停止してしまいますよ。 まー、TOPページなら大丈夫ですかねぇ。でも、わたしのHPには、勘弁してってとこです。 やりたいことがいまいちわからないのですが、 もし、他のHPへのリンクでしたら、 <a href="http://www.xxxxxxx.ne.jp/">あいうえおホームページ とするのが、一般的だと思います。 (これのことを、文字リンクと言っているのでしょうか?) 画像リンクなら <a href="http://www.xxxxxxx.ne.jp/"> <img src="yyyyy.gif"></a> といったところでしょうか?

leaz024
質問者

補足

 すみません、自社サイトに登録しているユーザが作成した掲示板から、その人のHPに飛ばすボタンの処理で困っています。  このようなエラーが出る事を最近聞かされて、何でだろうと思って2,3度試した次第です。これからは安易に他社HPに飛ばすのは辞めます。  文字リンクについてですが、通常のリンクを画像リンクと区別するためにこういう言い方をしたものです。ですので、この方法は使えません。  画像リンクなら全ての問題が解決するのは分かっているのですが、一応「ボタンでもできるのか?」「どういう設定のせいで起きるものなのか?」が聞けたらなぁと思って質問してみたのです。何かお分かりになりませんか?

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.1

こんにちは、honiyonです。  改善されるか分かりませんが...(^^; <FORM action="http://www.xxx.yy.zz/index.html" method="POST">   <INPUT type="submit" value="HPへ"> </FORM>  というような感じで、ファイル名まで指定してみてはどうでしょう?

leaz024
質問者

補足

私もそうかなと思い、以前やってみたのですが、だめでした。

関連するQ&A

  • post送信のについて

    post送信について ボタン部分は画像にし、下記のように設定しましたが ちゃんとできてますでしょうか?ボタンを押しても飛ぶのはとびますが ちゃんとPOST送信になってるのか不安です。 ちなみにURLを残さないようにしてるはずがfirefoxだと残ってましたので 間違ってると思ってます。。 <script type="text/javascript" > var element = document.createElement("input"); document.form[0].appendChild(element); document.form[0].method = "post"; document.form[0].action = "test.aspx"; </script> <body> <form action="URL" method="post"> <input name="form1" type="image" src="images/test.jpg" alt=""> </form> <form action="URL2" method="post"><input name="form2" type="image" src="images/test.jpg" alt=""> </form> </body>

  • phpでのpost送信について

    今、phpを使用して、データベースに格納されている値にリンクを貼り、その先にpostメソッドで値を渡すスクリプトを書いているのですが、formの書き方が悪いと思うのですがsyntax errorが出てしまいます。 echo '<form name='.X.' method='.POST.' action='.$Link_URL.'>'; echo '<input type='.hidden.' value='.$sql_result[$i]["renban"].' name='.primary.'>'; echo '</form>'; echo '<a href='.javascript:document.X.submit().'>'.$sql_result[$i]["title"].'</a>'; このスクリプトは$iの値によってループしています。 $sql_result[$i]["title"]という値にリンクを貼り、$Link_URLにpostで$sql_result[$i]["renban"]という値を送りたいと考えています。 何分初心者なもので、このやり方が最善かどうかもわかりませんが、改善案をご存知の方はご教授お願いします。

    • ベストアンサー
    • PHP
  • postで送信できないんです

    oracle plsqlで開発しています。 htmlからpostでプロシジャーに値をわたしていますが、 パラメータが渡っていないようです。 エラーページでREQUEST METHOD=GETと表示されてしまいます。 getで送るとページが表示されるのですが・・・ formタグのmethod=postにすればREQUEST METHODには自動的にPOSTがはいると 思っていたのですが、どこかで設定しなければいけないのでしょうか。 とても困っています。 どなたか教えてください。

    • 締切済み
    • CGI
  • リンクでPOST送信

    http://www.kojikoji.net/pso/javascript.asp こちらにその方法がのっていて、 Windows IE 6.0 Windows Opera 7.13 では動作を確認しました。ですが、 Windwos Netscape 7.1 で動作しません。Netscapeにも対応した書き方で、<a href=...>を用いてPOST送信することは可能でしょうか? *****以下引用*********************************** リンクやボタンを使って「xxx.asp」へPOST送信 <html> <head> <script language="JavaScript"> <!-- function wPost(a1,a2){ document.form1.text1.value=a1; document.form1.text2.value=a2; document.form1.action = "xxx.asp"; document.form1.submit(); } //--> </script> </head> <body> <a href="javascript:wPost("text1","text2")">送信</a> <input type="button" OnClick="wPost('text3','text4')" value="送信"> <form name="form1" method="post" action="err.html"> <input type="hidden" name="text1"> <input type="hidden" name="text2"> </form> </body> </html>

  • リンクをクリックした時にformからPOST送信したい。

    HTML、PHP、JavaScript等でサイトを作っているのですが・・・。 【実現出来ている例】 <form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">  <input type="submit" value="送信"> </form>  submitボタンを一つ置いて、それがクリックされた場合に formの内容をPOSTで送信する。 【実現したい例】 <form name="form1 method="post">  <a href="Next.php" onClick="???">???</a> </form>  formの中のリンクをクリックされた場合に、formの内容を POSTで送信したいのですが、その実現方法がわかりません。 GETで送るという手もあり得ますが、今回はどうしてもPOST したいのですが。

    • ベストアンサー
    • HTML
  • リンクを押すとフォームを送信

    リンクを押すとフォームを送信したいので、 <a href="JavaScript:document.form1.submit()"・・・ というふうに、書いたのですが、 リンクのみだとちゃんと動くのですが、 同一フォーム内にボタンとリンクが混在するとJavaScriptエラーが発生してしまします。どうしたらいいでしょうか?

    • ベストアンサー
    • HTML
  • jacascriptでのPOST送信について

    初めまして。 今回お聞きしたい事は、jsで取得した別フレームの文字列を、URLのパラータに付け、 actionに指定したものをpostで送るというものです。 get送信の場合は文字数制限があるためpostで送りたいです。 frame1:main frame2:sub frame1からframe2のcgiへpost送信を行いたいです。 main側でボタンを押した時に、subに表示されているテキストエリアの文字列を取得し、 それをurl+="prm="+prm;の形でurlのパラメータに設定し、document.f1.action=url; としてpostで送信している。 のですが、prm変数のパラメータの量が多い為、エラーが発生してしまっているみたいです。 例) //別フレームから値をprmdataに格納 var prmdata = parent.out.document.inform.csvedit.value; //送信url生成 url += "prm1=" + prmdata; document.form.taget = sub; document.form.method = post; document.form.action = url; ※上記方法でパラメータ自体送信出来るのですが、 prmdataのパラメータの量が多いとエラーとなってしまいます。 そもそもurlにパラメータを付けpost送信することは可能なのでしょうか? どうにか回避したいと考えています。 どなたかご教授ください。 よろしくお願いします。

  • リンクでPOSTデータを送信することは可能ですか?

    はじめまして。 Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか? やはりURLにデータを付加して送信するしかないのでしょうか? ご教授よろしくお願い致します。

    • ベストアンサー
    • HTML
  • フォームで送信ボタンを押した際に、Javascriptに入力した値が渡

    フォームで送信ボタンを押した際に、Javascriptに入力した値が渡せない タイトルそのままです。 ボタンを押したらJavascriptでフォームの値をとりたいのです 今は、 最初に取り込ませたいJavasprictをhead内に指定しておき、 <script language="JavaScript" src="/js/mc.js" type="text/javascript"></script> 本文中のformタグではは下文のようにしてあります。 <form id="form" name="ffform" action="#" method="post"> 送信用のボタンは画像で書き換えていて、ボタンを押すと、Javascriptの方で関数checkformを動かすようにしたいのです <input type="image" src="./img/submit.png" alt="送信" onclick="checkform()"> 実際に押してみても、ただ何も変化がなく、どうすればいいか困っています。どなたか教えてください actionのところにJavascriptを指定したら、Jsそのものを開いてしまいますし、cgiを置こうにも、今あるcgiは Javasprictからさらに値を渡す為にあるcgiだけなのです・・・・・・

    • ベストアンサー
    • HTML
  • POSTで送れない

    PerlでCGIを製作しています。 一覧画面-個別画面-編集画面 というページ構成ですが、一覧画面から個別画面、個別画面から編集画面へはURLの後に?をつけて要はGETでデータの受け渡しをしています。 編集画面に入った後、ボタン(submit)を押すとPOSTでデータを受け渡し、内部処理をしたいのですが、編集画面内では受け渡したいデータを<form method="post"></form>で囲んでいるにもかかわらず、どうやらGETで送られているようで、受け渡し先のところで$ENV{'REQUEST_METHOD'}を表示するようにして確認してみてもGETと表示されてしまいます。 きちんとPOSTと指定しているのになぜGETで送られてしまうのでしょうか。 (受け渡し前の画面のURLは、編集画面にくるための都合上http://○○.com?aaa=bbbのようになっています) また、どうすればPOSTで送ってくれるのでしょうか。 ヒントでも何でも結構ですので是非御指南ください。 よろしくお願いします。

    • ベストアンサー
    • Perl