- ベストアンサー
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番知りたいのは、↑これです) 以上よろしくお願い致します。
- みんなの回答 (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を許可してくれるものがあればよいのですが(^^; 参考になれば幸いです(..
その他の回答 (4)
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、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> あくまで推測ですが。 時間がなくてこちらでは試せていません(^^;スイマセン 参考になれば幸いです(..
補足
遅くなって、すみません。 ダミーのデータは前に試したのですが、やっぱりダメでした。 Location: を使うというのは思いつきませんでしたが、リンクで軽く飛べるものを、わざわざCGIにするというのは、多分社内では通らないでしょうね。 やっぱりHTMLのみでは、難しそうですね。 あと、このPOSTだと拒否(?)する設定っていうのが、どのようにされているのか分かる方、いませんか?
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 先ほどの私の方法でダメとなると、これしかないかもしれません。 <FORM> <input type=button value="HPへ" onclick='location.href="http://www.foo.co.jp/"> </FORM> JavaScriptとなってしまいますが...(^^; 参考になれば幸いです(..
補足
一応その辺は専門なので分かるのですが、何十万もユーザーがいると、うかつに「JavaScriptでしか遷移できない」というものは作れないんですよ。とほほ・・・
- itohh
- ベストアンサー率45% (210/459)
こんにちは。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> といったところでしょうか?
補足
すみません、自社サイトに登録しているユーザが作成した掲示板から、その人のHPに飛ばすボタンの処理で困っています。 このようなエラーが出る事を最近聞かされて、何でだろうと思って2,3度試した次第です。これからは安易に他社HPに飛ばすのは辞めます。 文字リンクについてですが、通常のリンクを画像リンクと区別するためにこういう言い方をしたものです。ですので、この方法は使えません。 画像リンクなら全ての問題が解決するのは分かっているのですが、一応「ボタンでもできるのか?」「どういう設定のせいで起きるものなのか?」が聞けたらなぁと思って質問してみたのです。何かお分かりになりませんか?
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 改善されるか分かりませんが...(^^; <FORM action="http://www.xxx.yy.zz/index.html" method="POST"> <INPUT type="submit" value="HPへ"> </FORM> というような感じで、ファイル名まで指定してみてはどうでしょう?
補足
私もそうかなと思い、以前やってみたのですが、だめでした。
お礼
なるほど、やはりPOSTがいけないんですね。 まぁ遷移先のサーバの設定を変えられるハズもないので、大人しく画像リンクにすることにします。 いろいろ調べていただき、本当にありがとうございました。