[PHP-dev 1375] Re: Location header の挙動

KUWASHIMA Yuichiro yuichiro @ kuwashima.org
2007年 7月 30日 (月) 18:24:39 JST


こんにちは。

> header("Location: http://www.yahoo.co.jp/");
> 
> などとした場合、強制的に 302 応答になってしまいます。これまでは 300 
> 番台の応答で使うことが多かった(というかそれしかなかった?)からだと
> 思いますが、最近は IETF の別の仕様では 201 とかでも使うことがある
> ようです。

php-5.2.3のソースでは、/main/SAPI.c:1006付近で201応答を特別視するように
なっています。
手元のphp-5.2.1では下記のコードで
<?php
header("HTTP/1.0 201 Created");
header("Location: http://localhost");
?>

以下が返ってきます。
HTTP/1.x 201 Created
Date: Mon, 30 Jul 2007 09:18:31 GMT
Server: Apache/2.2.3 (Ubuntu) PHP/5.2.1
X-Powered-By: PHP/5.2.1
Location: http://localhost


5.1.6でも特別視はしてますね。
http://cvs.php.net/viewvc.cgi/php-src/main/SAPI.c?view=markup&pathrev=php_5_1_6

どうしても201を上書きしてしまうなら、それは単なるバグでしょう。
おそらくこの時点で仕様上は今と同じようになっているはずです。
http://bugs.php.net/bug.php?id=25044


PHP-dev メーリングリストの案内