• ベストアンサー

HTTPでフォームを送信したい

JavaScriptで書かれた認証文字数チェックがある ユーザIDやパスなどの入力フォームを 本来サブミットで送信する内容を HTTPでPOSTまたはGETして、直接cgiにフォーム内容を 送信したいのですがその様なことは可能でしょうか? 可能でしたら方法やその理屈を教えていただけません でしょうか? 理由 通常ブラウザでアクセスするページを 専用のクライアントを作成し通信したいため submit形式のフォームをPOSTかGETで処理したい。

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

ブラウザでやっている事を、その専用クライアントとかいうので代わりにやるだけですから可能でしょう。 ・受け取り側がクライアントのUserAgnet等をチェックしているなら、それに合わせる必要はありますが。 ・その際、文字数チェックとかは送信するべきかどうかをチェックしているだけでしょうからJavascript無関係です。 例えば、POSTでは次のようなデータをサーバに送信します。(かなり略してます。) POST http://example.com/hoge.cgi HTTP/1.1 Content-Type: application/x-www-form-urlencoded Content-Length: 9 (空行) id=xxyyzz 受け取り側CGIがGETに対応しているなら、もっと簡単にURLに含めるだけで充分です。 GET http://example.com/hoge.cgi?id=xxyyzz もっとも、idやパスワードを送るならセキュティ上はPOSTを使うべきでしょう。 専用クライアントってのがいかなるものかわかりませんが、 作成するプログラミング言語によってはHTTP通信の為の便利なライブラリや関数等があるでしょうから実際には上記のようなヘッダを意識する事もないと思います。 Javascriptのカテで質問するより、クライントを作成する言語のカテで質問した方がいいかと思います。

akaginoyama
質問者

補足

大変わかりやすい説明ありがとうございます。 どのへんかが理解できておらず、うまくいきません。 もう少し(質問ができるくらい)勉強してみようと思います。 いろいろ試していたため返事が遅れて申し訳ありません。 また、進捗がありましたら報告させていただきます。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

>>> 本来サブミットで送信する内容を >>> HTTPでPOSTまたはGETして、直接cgiにフォーム内容を >>> 送信したいのですがその様なことは可能でしょうか? 以前は、サブミットボタンを経由してフォーム内容を送信していましたが、 JavaScriptによりFormオブジェクトのメソッドとして、 submit() と reset() が用意されています。たとえば、submit()メソッドを呼びだせば、サブミットボタンをクリックしたのと同様になります。 以下のコードを参考にしてみてください。 ----------------------------------------------------------------- <form name="f1" method="post" onclick="check()" action="abc.cgi"> ----------------------------------------------------------------- <script type="text/javascript"> <!-- function submit1(){ // 認証文字数チェックなどの処理を記述。検証できたときに、 f1.submit(); } // --> </script>

akaginoyama
質問者

お礼

HTMLおよびJavaScriptの知識が無い為質問を追加させてください。 (TCPの知識もあまりありませんが) 頂いたサンプルコードはサーバ側に設置してHTMLに埋め込んで あるコードの様ですが、これをHTTPで送信するには送信ヘッダに 埋め込むのでしょうか? 私が行いたい処理は、おおむね頂いたコードと同じ内容ですが どのように送信すればよいかわかりません。 もう少しレベルを下げて教えていただけませんでしょうか?

akaginoyama
質問者

補足

頂いた回答より私のイメージした処理。 送信先 http://www.~~.com/abc.cgi へ、 以下をpostすれば良いのでしょうか? name="f1" onclick="check()"

関連するQ&A

専門家に質問してみよう