web-dev-qa-db-fra.com

Si j'envoie une demande HTTP GET, est-ce que je reçois la réponse dans GET?

C'est probablement une question très basique alors pardonnez mon ignorance

Quelle méthode le serveur utilise-t-il pour répondre aux demandes qu'il reçoit?

Je fais une application web et il y a une certaine route qui retourne un gros fichier (disons image .iso). Ainsi, lorsque l'utilisateur clique sur un bouton de téléchargement, je demande à JavaScript de demander l'URL avec {method: "GET"}.

Lorsque le téléchargement commence sur la machine de l'utilisateur à ce moment, quel serveur de méthode HTTP utilise pour envoyer des fichiers?

Je suis vraiment confus:

  • comment est géré le téléchargement par l'utilisateur du téléchargement sur le serveur?
  • est-ce par défaut à POST pour les gros fichiers?
  • et en tant que programmeur, comment puis-je m'assurer que le téléchargement est facile (peut être repris) pour mes utilisateurs finaux?
6
RinkyPinku

Quelle méthode l'utilisateur du serveur répond-il aux demandes qu'il reçoit?

HTTP est le protocole de demande-réponse. Quelle que soit la méthode HTTP (GET, POST, HEAD, etc.) que vous utilisez pour faire une demande au serveur, le serveur répond toujours de la même manière manière (qui n'a rien à voir avec votre méthode de demande); bien sûr, le contenu de la réponse est modifié en fonction de votre demande.
Il n'y a donc pas de réponses POST ou GET.

comment est géré le téléchargement par l'utilisateur du téléchargement sur le serveur?

Lorsque vous téléchargez des fichiers sur un serveur/service, vous envoyez une demande qui contient le fichier lui-même, le protocole HTTP suggère que vous devriez envoyer des données en utilisant le POST demande.

Lors du téléchargement de fichiers depuis le serveur, le serveur vous enverra un fichier dans la réponse. Vous devez utiliser la requête GET lorsque vous demandez des fichiers distants, car GET est défini comme la commande utilisée pour récupérer les ressources. En outre, le type de données envoyées est spécifié dans la partie d'en-tête de la demande et de la réponse sous la forme Content-Type.

Notez que vous pouvez également télécharger des fichiers à l'aide de GET, en remplissant le fichier entier dans l'URL, ou télécharger des fichiers en réponse à la demande POST. Cependant, ce sont des applications non standard et qui ont des limites (par exemple, limitation de la longueur maximale de l'URL), vous auriez également beaucoup plus de travail sur le traitement côté serveur de ces demandes.

Est-ce par défaut à POST pour les gros fichiers?

Il faut déjà y répondre - le serveur ne vous envoie aucun POST ou GET, juste des réponses.

En tant que programmeur, comment puis-je m'assurer que le téléchargement est facile (peut être repris) pour mes utilisateurs finaux?

Cela dépendra à la fois de la technologie côté serveur et côté client utilisée. Les navigateurs modernes et les serveurs Web correctement configurés peuvent généralement reprendre automatiquement les téléchargements de fichiers existants. Cependant, si vous créez manuellement la réponse du fichier sur le serveur, vous devrez également gérer manuellement la reprise du téléchargement. Voir cette réponse pour l'implémentation avec PHP.

11
Marek Rost

GET et POST sont des méthodes de demande pour les clients. Voir comparaison .

  • GET - Demande des données à une ressource spécifiée. La chaîne de requête (paires nom/valeur) est envoyée dans l'URL d'une requête GET.
  • POST - Soumet les données à traiter à une ressource spécifiée. La chaîne de requête (paires nom/valeur) est envoyée dans le corps du message HTTP d'une demande POST.

La méthode ne change pas de la demande à la réponse. Les en-têtes de réponse ne mentionnent même pas la méthode. (Exemple tiré de cet article Bases HTTP .)

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>

Ici le Content-Type l'en-tête joue un rôle plus important dans l'identification de ce que le client doit faire avec le contenu.

4
Esa Jokinen