Téléchargement du fichier en utilisant la Méthode GET
Comme nous le savons tous, transfert de fichier est le plus souvent réalisé à l'aide de POST
méthode. Alors, pourquoi ne peut-on pas GET
de la méthode utilisée pour les uploads de fichier à la place? Est-t-il une interdiction HTTP GET
uploads?
- Parce qu'une URL est à peu près la limite de 2000 caractères...en essayant de faire un dossier complet là...pas la meilleure idée...
- plus le fichier devra être url_encoded, qui n'est également pas une bonne idée
- De toute façon, la méthode GET peut être utilisé pour télécharger le fichier, mais...
- Principalement parce que GET est utilisée pour obtenir des informations, tandis que le POST est utilisée pour l'affichage sur le serveur. Très simplement, d'utiliser OBTENIR seulement pour des choses qui ne changent rien sur le serveur, et de ne POSTER que pour les choses qui le font.
- Je ne comprends pas pourquoi les gens en essayant de garder près vote, ce que n'est pas "une vraie question" ... c'est déjà l'été rouverte une fois. Si vous comprenez HTTP, vous savez que ce n'est pas seulement une question mais une source fréquente de malentendus (comme en témoigne le mauvais commentaires ci-dessus) pour lesquels une connaissance de l'explication est utile.
- VOTE SERRÉ, CETTE QUESTION UNE FOIS DE PLUS, JE VOUS L'OSEZ!!!! --Samuel L. Jackson (Public Service Announcement)
- Le téléchargement des données dans une commande GET a le sens parfait lorsque les données est un paramètre pour l'OBTENIR. Par exemple. un JSON codé liste des id de ressource de l'obtenir. Merci pour les précisions ci-dessous!
- Sauf pour les longues Url, le téléchargement d'images via arriver à faire un "images similaires" recherche semble parfaitement raisonnable.
Vous devez vous connecter pour publier un commentaire.
Requêtes GET peut contenir un corps d'entité
RFC 2616 n'empêche pas un corps d'entité dans le cadre d'une requête GET. C'est souvent mal compris, car PHP brouille les eaux avec son mal-nommé
$_GET
superglobale.$_GET
techniquement n'a rien à voir avec le HTTPGET
de la méthode de requête -- ce n'est rien de plus qu'une valeur-clé de la liste des url-encodé paramètres de l'URI de la demande de la chaîne de requête. Vous pouvez accéder à la$_GET
tableau, même si la demande a été faite par POST/PUT/etc. Bizarre, non? Pas une très bonne abstraction, est-il?Pourquoi un corps d'entité est une mauvaise idée
Donc, quelle est la spec dire à propos de la méthode GET ... bien:
De sorte que la chose la plus importante à OBTENIR est de s'assurer que toute requête GET est sûr. Encore, l'interdiction est
seulement "ne DEVRAIT PAS" ... techniquement HTTP permet toujours une demandes pour entraîner une action qui n'est pas
strictement basée autour de "l'extraction".
Bien entendu, d'un point de vue sémantique à l'aide d'une méthode nommée
GET
pour effectuer une autre action que"l'obtention" d'une ressource ne fait pas beaucoup de sens non plus.
Quand un corps d'entité est flat-out faux
Concernant l'idempotence, la spec dit:
Cela signifie qu'une méthode d'OBTENIR ne doit pas ont différents effets secondaires pour plusieurs demandes de la
même ressource. Donc, quel que soit le corps de l'entité de présenter dans le cadre d'une requête GET, les effets secondaires
doit toujours être la même. En d'autres termes cela signifie que si vous envoyez un OBTENIR avec un corps d'entité
100 fois le serveur ne peut pas créer 100 nouvelles ressources. Si envoyé une fois ou 100 fois la demande doit
avoir le même résultat. Cela limite considérablement l'utilité de la méthode GET pour envoyer des organes compétents des entités.
En cas de doute, toujours se rabattre à la sécurité/idempotence des tests lors de l'évaluation de l'efficacité
d'une méthode et de ses effets secondaires.
Dans le cas de la Méthode GET
Donc, que l'upload de fichier n'est pas possible dans la Méthode GET
Dans le Cas où il est nécessaire d'utiliser
$_GET['input_name']
avec la méthode post en PHP il suffit de passer les paramètres dans l'action comme