24

HTML では、いくつかの方法で GET 要求を使用して、あるページから別のページにデータを送信できます。

http://www.example.com/somepage.php?data=1

...また...

<form action="somepage.php" method="get">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

ただし、POST リクエストでは、次のようなフォーム要素を介してデータが送信されるのを見たことがあります。

<form action="somepage.php" method="post">
  <input type="hidden" name="data" value="1" />
  <input type="submit" value="Submit">
</form>

POST を使用して別のページに送信したいパラメーターが 1 つしかない場合、フォームでラップするよりも簡単な方法はありますか?

4

5 に答える 5

31

ブラウザから POST するには、フォームまたはAjaxリクエストの 2 つの方法しかありません。

于 2008-11-28T14:49:46.233 に答える
7

HTML のみを使用すると、フォームは POST 要求を生成する唯一の方法です。サーバーサイドスクリプト/Javascriptを使用して、他の方法でPOSTリクエストを生成できますが、プレーンHTMLのみを処理する他の方法はありません.

于 2008-11-28T14:51:01.393 に答える
4

既に発見したように、http プロトコルを介してデータを送信するには、正確に 2 つの方法があります:GETまたはPOST. と呼ばれる 3 番目のタイプの HTTP メッセージもありますがHEAD、これはリソースをダウンロードせずにリソースのメタデータを取得するためにのみ使用され、広く実装されていません。

明らかに と の両方GETに、タグPOSTを使用して簡単にアクセスできます。<form>またGET、クエリ パラメータを名前と値のペアの形式で URL に手動で追加することにより、簡単にアクセスすることもできます ( foo.html?a=1&b=2)。

ただし、の優れた点と複雑なPOST点は、名前と値のペアがブラウザから Web サーバーに伝達され、簡単にアクセスできない HTTP 要求ヘッダーに含まれていることです。POSTタグを使用せずに を実現する唯一の方法<form>は、HTTP 要求ヘッダーを手動で変更し、名前と値のペアを自分で追加することです。

GETまた、HTTP サーバーは、要求 (またはPOST) がメインのブラウザー ウィンドウからのものか、AJAX 呼び出しからのものかを本質的に認識していないことに注意してください。いずれにせよ、Web サーバーはリクエストを読み取り、それがGETまたはPOSTリクエストかどうかを解読し、必要に応じて名前と値のペアを探し、レスポンスを生成します。

POSTリクエストを適切にフォーマットする方法についてさらに詳しく知りたい場合は、 jmarshall.com /easy/http / またはおそらくtcpipguide.com/free/t_HTTPRequestMessageFormat.htmにアクセスしてください。決定的なリソースは常にW3Cですが、RFC は、単なる人間が読むにはひどく混乱することがあります。

于 2008-11-28T15:47:21.983 に答える
2

HTML のみでフォームを使用します。

ただし、サーバー側で遊んでいる場合は、それを行うことができます。これは、Get を操作して PHP 経由で Post に変更する方法を示す良い記事です。これには fsockopen をいじる必要があります... この方法では、パラメータ ?id=1¶m=2 を使用し、サーバー側で POST リクエストを作成します。セットアップが完了すると動作するように汎用にすることができますが、最初にすべてをセットアップするのは少し手間がかかります。

于 2008-11-28T14:55:35.333 に答える
0

もちろん、POST リクエスト (GET /pageWhichCreatesAPost.py など) を作成するサーバー側 (または AJAX) ロジックを含むページに対して、いつでも GET を実行できます。もちろん非常に厄介ですが、このような回避策が役立つ場合があります。

于 2008-11-28T15:51:50.367 に答える