web-dev-qa-db-ja.com

フォームを介してHTMLでPOSTパラメータを渡す唯一の方法はありますか?

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つしかない場合、フォームにラップするよりも簡単な方法はありますか?

24
Philip Morton

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

31
Greg

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

7
Eran Galperin

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

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

ただし、POSTの美しさと複雑さは、名前と値のペアがブラウザーから、それほど簡単にアクセスできないHTTPリクエストヘッダー内にあるWebサーバーに通信されることです。 <form>タグを使用せずにPOSTを実行する唯一の方法は、HTTPリクエストヘッダーを手動で変更し、名前と値のペアを自分で追加することです。

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

POSTリクエストを適切にフォーマットする方法の詳細が必要な場合は、 jmarshall.com/easy/http/ または tcpipguide.com/freeにアクセスできます。 /t_HTTPRequestMessageFormat.htm 。決定的なリソースは常に W3C ですが、RFCは、私たちの単なる人間が読むことを非常に混乱させることがあります。

4
Ed Lucas

HTMLではフォームのみです。

しかし、サーバー側でプレイすればそれは可能です。 PHPを介して Get to Change to Post を操作する方法を示す優れた記事を次に示します。これにはfsockopenを使用する必要があります...この方法では、パラメーター?id = 1&param = 2 ...が使用され、サーバー側でPOSTリクエストが作成されます。いったん設定すると機能しますが、最初にすべてを設定するのは簡単です。

2

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

0
LudoA