PUT メソッドの挙動

HTTP通信におけるPUTメソッドの動きを調べてみました。
ApacheではデフォルトでPUTメソッドは禁止されているので、まずはPUTメソッドを許可する必要があります。
httpd.confを以下のように編集します。

<Directory "/var/www/dav">
AllowOverride all
Order allow,deny
Allow from all
DAV On
</Directory>

PUTメソッドを許可するディレクトリを指定して"DAV on"と記述することでPUTメソッドを使用できるようになります。
※事前に以下のようなwebdavのモジュールを有効にする必要があります。
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so

また対象のディレクトリに対してPUTメソッドを使用してファイルをアップロードするには、最低でもユーザに対して書き込み権限と実行権限を与える必要があります。chmodコマンドで必要な権限を与えます。

telnetで80番ポートに対してPUTのリクエストを送ります。
※必ず"Content-Length"を指定して2行分、改行してから(つまりEnterキーを2回押してから)メッセージ・ボディを入力すること

[example@user]# telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
PUT /dav/put.txt HTTP/1.0
Host: www.example.com
Content-Length: 5

Hello

HTTP/1.1 201 Created
Date: Sat, 31 May 2014 12:55:50 GMT
Server: Apache
Location: http://www.example.com/dav/put.txt
Content-Length: 266
Connection: close
Content-Type: text/html; charset=ISO-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>201 Created</title>
</head><body>
<h1>Created</h1>
<p>Resource /dav/put.txt has been created.</p>
<hr />

ファイルがアップロードされました。
[example@user]# ls
put.txt
[example@user]# cat put.txt
Hello

以上

Leave a Reply

Your email address will not be published. Required fields are marked *