ご存知のように、ファイルのアップロードはほとんどの場合POST
メソッドを使用して行われます。それでは、代わりにGET
メソッドをファイルのアップロードに使用できないのはなぜですか? HTTP GET
アップロードに対する特定の禁止事項はありますか?
RFC 2616は、GET要求の一部としてエンティティ本体を妨げません。 PHP=poorly-named_$_GET
_ superglobal。_$_GET
_は技術的にはHTTP GET
リクエストメソッドとは何の関係もありません-これはリクエストURIクエリ文字列からのURLエンコードされたパラメーターのキーと値のリストにすぎません。_$_GET
_要求がPOST/PUT/etcを介して行われた場合でも配列奇妙な、正しい抽象化ではありませんか?
仕様はGETメソッドについて述べている ...何をしますか:
特に、GETメソッドとHEADメソッドは、検索以外のアクションを実行する意味を持つべきではないという慣習が確立されています。これらのメソッドは「安全」と見なされるべきです。
GETで重要なことは、GETリクエストが安全であることを確認することです。それでも、禁止は "SHOULD NOT"のみです...技術的には、HTTPは依然としてGETリクエストが厳密に基づいていないアクションをもたらすことを許可します"検索。"
もちろん、GET
という名前のメソッドを使用してリソースを「取得」する以外のアクションを実行するセマンティックの観点からも、あまり意味がありません。
べき等性に関して、仕様には次のように書かれています:
メソッドは、「エラーまたは有効期限の問題を除いて」N> 0の同一リクエストの副作用が単一リクエストの場合と同じであるという点で「べき等性」のプロパティを持つこともできます。メソッドGET、HEAD、PUT、およびDELETEは、このプロパティを共有します。
これは、GETメソッドが同じリソースに対する複数のリクエストに対して異なる副作用を持たないことを意味します。そのため、GET要求の一部として存在するエンティティ本体に関係なく、副作用は常に同じでなければなりません。素人の言葉で言えば、これは、エンティティ本体で100回GETを送信した場合、サーバーは100個の新しいリソースを作成できないことを意味します。リクエストを1回送信する場合でも100回送信する場合でも、同じ結果が必要です。これは、エンティティ本体を送信するためのGETメソッドの有用性を厳しく制限します。
疑わしい場合は、メソッドの有効性とその結果生じる副作用を評価する際に、常に安全性/べき等性テストにフォールバックします。