現象

WebSitesにPUT、DELETEすると次のようなレスポンスが返ってきました。

Allow: GET, HEAD, OPTIONS, TRACE
Content-Length:101 Bytes
Content-Type: text/html
Date: 2015 Mar 12 15:08:40+3s
Server: Microsoft-IIS/8.0
Set-Cookie: ARRAffinity=65 B, session
xxxxxxx.azurewebsites.net/
X-Powered-By: ASP.NET

The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.

アプリケーション側ではなくIISくさいです。

対処法

StackOverflowでみつけました。how-do-i-enable-put-requests-in-azure

Web.configのsystem.webServerに次のハンドラを追記します。

<handlers>
    <remove name="PHP54_via_FastCGI" />
    <add name="PHP54_via_FastCGI" modules="FastCgiModule" verb="GET, PUT, POST, DELETE, HEAD, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK" path="*.php" scriptprocessor="D:\Program Files (x86)\PHP\v5.4\php-cgi.exe" resourcetype="Either" requireaccess="Script" />
</handlers>

現在、PHPはデフォルトで5.4がロードされていますが、[構成]で明示的にバージョン指定をしている場合はそれぞれのバージョンにパスを変えましょう。

必要なメソッドだけ許可するのが良さそう。

とりあえずPUT、DELETEできるようになって一安心です。

CATEGORIES