HTTPメソッドスプーフィング

HTMLフォームを使用する場合、GETまたはPOSTのHTTP動詞しか使用できません。ほとんどの場合、これで問題ありません。しかし、RESTfulルーティングをサポートするには、DELETEやPUTなど、より適切な動詞をサポートする必要があります。ブラウザではこれがサポートされていないため、CodeIgniterはメソッドをスプーフィングする方法を提供しています。これにより、POSTリクエストを行うことができますが、アプリケーションに対して異なるリクエストタイプとして扱うように指示できます。

メソッドをスプーフィングするには、_methodという名前の隠し入力フォームに追加します。その値は、リクエストとして扱うHTTP動詞です。

<form action="" method="post">
    <input type="hidden" name="_method" value="PUT">
</form>

このフォームはPUTリクエストに変換され、ルーティングとIncomingRequestクラスに関しては真のPUTリクエストとなります。

使用するフォームはPOSTリクエストでなければなりません。GETリクエストはスプーフィングできません。

注記

一部のサーバーでは、デフォルト設定ではすべてのHTTP動詞がサポートされておらず、動作させるには追加のパッケージを有効にする必要があるため、Webサーバーの設定を確認してください。