web-dev-qa-db-ja.com

GET vs POST in AJAX?

とにかくページURLに影響を与えないのに、なぜPOSTにGETリクエストとAJAXリクエストがあるのですか? AJAXのGETを介して機密データを渡すことで、データがページURLに反映されないため、どのような違いがありますか?

22
Xinus

Webサービスに必要なものに応じて、適切なHTTP動詞を使用する必要があります。


CollectionURIを処理する場合:http://example.com/resources/

[〜#〜] get [〜#〜]:コレクションのメンバーを一覧表示し、さらにナビゲートするためのメンバーURIを入力します。たとえば、販売されているすべての車をリストします。

[〜#〜] put [〜#〜]:「コレクション全体を別のコレクションに置き換える」と定義された意味。

[〜#〜] post [〜#〜]:コレクションによってIDが自動的に割り当てられる新しいエントリをコレクションに作成します。作成されたIDは通常、この操作によって返されるデータの一部として含まれます。

[〜#〜] delete [〜#〜]:「コレクション全体を削除する」と定義された意味。


MemberURIを処理する場合:http://example.com/resources/7HOU57Y

[〜#〜] get [〜#〜]:適切なMIMEタイプで表現されたコレクションのアドレス指定されたメンバーの表現を取得します。

[〜#〜] put [〜#〜]:コレクションのアドレス指定されたメンバーを更新するか、指定されたIDで作成します。

[〜#〜] post [〜#〜]:アドレス指定されたメンバーをそれ自体でコレクションとして扱い、その新しい従属を作成します。

[〜#〜] delete [〜#〜]:コレクションのアドレス指定されたメンバーを削除します。


出典: ウィキペディア

41
Daniel Vassallo

さて、GETに関しては、まだURLの長さの制限があります。それ以外に、サーバーがPOSTとGETリクエストを異なる方法で処理することはかなり考えられます。したがって、実行しているリクエストを指定できる必要があります。

18
David Hedlund

GETPOSTのもう1つの違いは、ブラウザでのキャッシュの処理方法です。 POST応答がキャッシュされることはありません。 GETは、応答ヘッダーで指定されたキャッシュルールに基づいてキャッシュされる場合とされない場合があります。

9
Chetan Sastry

それらを持っている2つの主な理由:

  1. GETリクエストには、サイズに関してかなり制限的な制限があります。 POSTは通常、はるかに多くの情報を含めることができます。

  2. バックエンドは、設計方法に応じて、GETまたはPOSTを予期している可能性があります。バックエンドが期待している場合はGETを実行し、それが期待している場合はPOSTを実行する柔軟性が必要です。

6
T.J. Crowder

それは単にhttpプロトコルのルールを尊重することです。

Get-呼び出しはべき等でなければなりません。これは、何度も呼び出すと同じ結果が得られることを意味します。基礎となるデータを変更することを意図したものではありません。これを検索ボックスなどに使用できます。

投稿-呼び出しはべき等ではありません。基になるデータに変更を加えることが許可されているため、createメソッドで使用される場合があります。複数回呼び出すと、複数のエントリが作成されます。

6
DanH

通常、パラメータをAJAXスクリプトに送信し、これらのパラメータに基づいてデータを返します。method= "get"またはmethod = "post"を持つフォームと同じように機能します。GETを使用する場合メソッドの場合、パラメーターはクエリ文字列で渡されます。POSTメソッドを使用する場合、パラメーターは投稿の本文で送信されます。

一般に、パラメーターの文字数が非常に少なく、機密情報が含まれていない場合は、GETメソッドを介してパラメーターを送信します。機密データ(例:パスワード)または長いテキスト(例:人の8000文字の長い経歴)は、POSTメソッドを介して送信する方が適切です。

4
Salman A

ありがとう..私は主にAjaxでGETメソッドを使用していますが、これまで問題はありませんでした。

Internet Explorer(FirefoxやGoogle Chromeとは異なり)は、同じGET値を使用している場合、GET呼び出しをキャッシュします。

したがって、Ajax GETで一定の間隔を使用すると、Ajax GETごとに無関係な乱数の使用法でURLを変更しない限り、同じ結果を表示できます。

AjaxでGETメソッドを使用すると、フィールドの値のコンテンツのみが送信され、コンテンツの形式は送信されません。たとえば、テキスト領域のコンテンツは、GETメソッドの場合(改行文字なし)にURLに追加されるだけです。 POSTメソッドではそうではありません。

0
ashish kumar

他の人は要点(コンテキスト/べき等、およびサイズ)をカバーしましたが、私は別のものを追加します:暗号化。 SSLを使用していて、入力引数を暗号化する場合は、POSTを使用する必要があります。

0
ss ulrey