web-dev-qa-db-ja.com

HTTP GETリクエストを送信した場合、GETでレスポンスを受け取りますか?

これはおそらく非常に基本的な質問なので、私の無知を許してください

サーバーは、取得した要求に応答するためにどの方法を使用しますか?

私はWebアプリを作成していますが、大きな(たとえば.isoイメージ)ファイルを返す特定のルートがあります。したがって、ユーザーがダウンロードボタンをクリックすると、JavaScriptに{method: "GET"}

そのときにユーザーのマシンでダウンロードが開始されると、どのHTTPメソッドサーバーがファイルの送信に使用していますか?

私は本当に混乱しています:

  • サーバーアップロードのユーザーダウンロードはどのように処理されますか?
  • 大きなファイルの場合、デフォルトはPOSTですか?
  • プログラマーとして、エンドユーザーが簡単にダウンロード(再開)できるようにするにはどうすればよいですか?
6
RinkyPinku

サーバーのユーザーは、取得したリクエストにどの方法で応答しますか?

[〜#〜] http [〜#〜] は要求/応答プロトコルです。サーバーへのリクエストに使用するHTTPメソッド(GET、POST、HEADなど)に関係なく、サーバーは常に同じように応答します方法(リクエストメソッドとは関係ありません);もちろんご要望に応じて回答内容を変更いたします。
そのため、POSTやGET応答などはありません。

サーバーアップロードのユーザーダウンロードはどのように処理されますか?

ファイル自体を含むリクエストを送信しているサーバー/サービスにファイルをアップロードする場合、HTTPプロトコル suggests that you should を使用してデータを送信しますPOST リクエスト。

サーバーからファイルをダウンロードするとき、サーバーは応答内でファイルを送信します。 GETはリソースの取得に使用されるコマンドとして定義されているため、リモートファイルを要求する場合はGET要求を使用する必要があります。また、送信されるデータのタイプは、リクエストとレスポンスの両方のヘッダー部分でContent-Typeとして指定されます。

また、GETを使用してファイル全体をURLに詰めることでファイルをアップロードしたり、POSTリクエストへの応答でファイルをダウンロードしたりできることに注意してください。ただし、これらは非標準のアプリケーションであり、制限(たとえば、URLの最大長の制限)があるため、これらの要求を処理するサーバー側でさらに多くの作業が必要になります。

大きなファイルの場合、デフォルトはPOSTですか?

これはすでに回答されているはずです。サーバーはPOSTまたはGETを送信せず、応答のみを送信します。

プログラマーとして、エンドユーザーが簡単にダウンロード(再開)できるようにするにはどうすればよいですか?

これは、使用されるサーバー側とクライアント側の両方のテクノロジに依存します。最新のブラウザーと適切に構成されたWebサーバーは、通常、既存のファイルのダウンロードを自動的に再開できます。ただし、サーバーでファイル応答を手動で構築する場合は、ダウンロードの再開を手動で処理する必要もあります。 この回答を参照 PHPでの実装。

11
Marek Rost

GETおよびPOSTは、クライアントの要求メソッドです。 比較 を参照してください。

  • GET-指定されたリソースからデータを要求します。クエリ文字列(名前と値のペア)は、GETリクエストのURLで送信されます。
  • POST-処理するデータを指定したリソースに送信します。クエリ文字列(名前と値のペア)は、POSTリクエストのHTTPメッセージ本文で送信されます。

メソッドはリクエストからレスポンスに変わりません。応答ヘッダーはメソッドについても言及していません。 (これの例 HTTP Basics 記事。)

HTTP/1.1 200 OK
Date: Sun, 18 Oct 2009 08:56:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT
ETag: "10000000565a5-2c-3e94b66c2e680"
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
X-Pad: avoid browser bug

<html><body><h1>It works!</h1></body></html>

ここでは、Content-Typeヘッダーは、クライアントがコンテンツをどう処理するかを識別する上でより大きな役割を果たします。

4
Esa Jokinen