DNS RobotDNS Propagation Checker
ホームDNS検索WHOISIP検索SSL
DNS RobotDNS Propagation Checker

次世代DNS伝播チェックツール

プライバシーポリシー利用規約私たちについてブログお問い合わせ

DNSツール

DNS検索DNS速度テストドメインからIP変換NS検索MX検索すべて表示

メールツール

SPFレコードチェッカーDMARCチェッカーDKIMチェッカーSMTPテストツールメールヘッダー解析すべて表示

ウェブサイトツール

WHOIS検索ホスティングチェッカードメイン空き状況確認サブドメイン検索CMS検出ツールすべて表示

ネットワークツール

PingツールトレースルートポートチェッカーHTTPヘッダーチェックSSL証明書チェックすべて表示

IPツール

IP検索自分のIPアドレス確認IPブラックリストチェックIPからホスト名変換ASN検索すべて表示

ユーティリティツール

QRコードスキャナーQRコード生成UPI QR Code GeneratorWiFi QR Code Generatorモールス信号変換すべて表示
© 2026 DNS Robot. 開発: ❤ Shaik Brothers
全システム正常稼働中
Made with
ホーム/ブログ/405 Method Not Allowed とは?原因と解決方法

405 Method Not Allowed とは?原因と解決方法

Shaik Vahid2026年9月30日8 分で読める
nginx の「405 Not Allowed」エラーページと、405 Method Not Allowed を解決する手順を順に並べた図
nginx の「405 Not Allowed」エラーページと、405 Method Not Allowed を解決する手順を順に並べた図

ポイント

405 Method Not Allowed は、サーバーが URL を認識しているものの、そこで使われた HTTP メソッドを受け付けないことを意味します。たとえば、GET しか受け付けないページに POST を送った場合です。RFC 9110 では、受け付けるメソッドを Allow ヘッダーで列挙することがサーバーに義務付けられているので、まずそのヘッダーを確認しましょう。典型的な原因は、フォームや API 呼び出しのメソッドの誤り、nginx での静的ファイルへの POST、そのメソッドをエクスポートしていないルートハンドラー(Next.js、Flask、Django)、IIS で PUT と DELETE を横取りする WebDAV、そしてサーバーが処理しない CORS プリフライトの OPTIONS リクエストです。

Advertisement

405 Method Not Allowed エラーとは?

405 Method Not Allowed は、リクエストしたアドレスをサーバーは認識しているものの、リクエストで使われたメソッドを許可していないことを示す HTTP ステータスコードです。RFC 9110(セクション 15.5.6)では、そのメソッドが「オリジンサーバーには認識されているが、対象リソースではサポートされていない」状態と定義されています。

すべての HTTP リクエストにはメソッドがあります。ページを読むための GET、フォームを送信したり何かを作成したりする POST、更新するための PUT と PATCH、削除するための DELETE、許可されている操作を問い合わせる OPTIONS です。405 は、URL は存在するものの、その動詞(メソッド)では使えないという意味です。URL そのものが存在しなければ、代わりに 404 が返ります。

405 はページが見つからないことではなく、リクエストの送り方に関するエラーなので、ほとんどの場合はサイトの開発者が直すべきものです。訪問者がこのエラーに遭遇するのは、たいていフォームを送信した後や、古いリンクをたどったときです。

メモ

標準仕様では、405 レスポンスにはその URL が受け付けるメソッドを列挙した Allow ヘッダー(例:Allow: GET, HEAD)を必ず含めることになっています。これが、何が問題だったのかを知る最も手っ取り早い手がかりです。

405 エラーの表示例

サーバー / フレームワーク典型的なメッセージ
nginx405 Not Allowed(その下に nginx と表示)
ApacheMethod Not Allowed. The requested method POST is not allowed for this URL.
IISHTTP Error 405.0 - Method Not Allowed. The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.(日本語版の IIS では「HTTP エラー 405.0 - Method Not Allowed」)
Next.js / APIステータス 405 の空のレスポンス、または JSON レスポンス。DevTools でしか確認できないことが多い
ブラウザのコンソール(CORS)CORS エラー。OPTIONS のプリフライトが 405 を受け取ったために表示される

Advertisement

ステップ1:Allow ヘッダーを確認する

その URL でどのメソッドを受け付けるのかを、サーバーに問い合わせます。OPTIONS リクエストを送るか、失敗したリクエストをヘッダー付きで再送してください。

bash
# この URL はどのメソッドを受け付けるか?
curl -i -X OPTIONS https://example.com/api/contact

# 失敗したリクエストを再送し、ステータスと Allow ヘッダーを確認する
curl -i -X POST https://example.com/api/contact -d 'name=test'
# HTTP/2 405
# allow: GET, HEAD

DNS Robot の HTTP ヘッダーチェックツールは、通常の GET リクエストに対して URL が返すステータスコードとヘッダーを表示します。API ではなく、ブラウザで開くページを確認するときに便利です。

すべてのサーバーがこのルールに従っているわけではありません。たとえば nginx 組み込みの 405 ページは Allow ヘッダーなしで送信されるため、nginx の場合は代わりに、どの location ブロックがその URL を処理しているかを確認する必要があります(解決策2)。

訪問者の方へ

  • 前のページに戻って再読み込みしてから、フォームをもう一度送信します。古いキャッシュから読み込まれたフォームは、その後変更されたアドレスに送信してしまうことがあります。

  • 送信後にページを更新しない。 フォーム送信の結果として表示されたページを更新すると、GET しか受け付けない URL に POST が再送されることがあります。

  • アドレスを確認する。 入力ミスがないか確かめるか、サイトのトップページを開いてもう一度たどってください。

  • 報告する。 サイトのフォームが毎回失敗する場合はサイト管理者が直す必要があるので、ページのアドレスを伝えましょう。

Advertisement

解決策1:正しい URL に正しいメソッドを送る

コードで最もよくある原因は、単純な食い違いです。エンドポイントが GET しか受け付けないのにフォームや fetch() 呼び出しが POST を使っている、あるいはリクエストが API の URL ではなくページの URL に送られている、といったケースです。コード内のメソッドを、Allow ヘッダーや API のドキュメントと照らし合わせてください。

javascript
// このエンドポイントは POST しか許可しないため、GET(fetch のデフォルト)では 405 が返る
const res = await fetch("/api/contact", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Ana" }),
})
if (res.status === 405) console.log("Allowed:", res.headers.get("allow"))

ヒント

末尾のスラッシュとリダイレクトに注意してください。/api/contact が 301 または 302 で /api/contact/ にリダイレクトされると、多くのクライアントはリクエストを GET として再送し、POST 専用のエンドポイントが 405 を返します。リダイレクトチェッカーを使えば、すべての転送先を確認できます。

解決策2:nginx が静的ファイルへの POST に 405 を返す

nginx の静的ファイルハンドラーは GET と HEAD しか処理しません。.html ファイルへの POST や、リクエストをアプリケーションに渡さずにファイルを返す location への POST には、405 Not Allowed が返されます。これは、フォームの action が静的ページを指している場合や、アプリ用の location ブロックが一致しない場合によく起こります。

根本的な解決策は、適切な location ブロックで proxy_pass または fastcgi_pass を使い、POST をアプリケーション(PHP、Node、Python)に送ることです。どのブロックがその URL を処理しているかを確認してください。

nginx
# フォームの POST は静的ファイルハンドラーではなくアプリに届ける必要がある
location /api/ {
    proxy_pass http://127.0.0.1:3000;
}

# 変更後にテストして再読み込みする
# sudo nginx -t && sudo systemctl reload nginx

ヒント

405 を 200 に変えるために error_page 405 =200 $uri; を勧めるガイドもありますが、これはエラーを隠すだけです。POST データは相変わらずコードに届きません。代わりに、リクエストをアプリケーションにルーティングしてください。

Advertisement

解決策3:IIS が PUT と DELETE をブロックする(WebDAV)

IIS を実行している Windows サーバーでは、WebDAV モジュールが PUT と DELETE の動詞を横取りするため、REST API(ASP.NET Web API など)はそれらに対して HTTP Error 405.0 を返します。WebDAV を使っていない場合は、web.config でサイトから削除してください。

xml
<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

IIS マネージャーで、サイトの 要求フィルター(Request Filtering)設定の HTTP 動詞 タブも確認してください。特定のメソッドを一律に拒否している場合があります(その場合、IIS は 405 ではなく 404.6 を返します)。

解決策4:ルートハンドラーにメソッドを追加する

ルートは存在するのに、使われたメソッドに対応するハンドラーがない場合、フレームワークは 405 を返します。

  • Next.js(App Router): route.ts は、エクスポートしているメソッドにしか応答しません。GET だけをエクスポートして POST をエクスポートしていなければ、POST には 405 が返ります。export async function POST(request: Request) { … } を追加してください。

  • Flask: ルートはデフォルトで GET しか受け付けません。@app.route("/contact", methods=["GET", "POST"]) を使います。

  • Django: クラスベースビューは、対応するハンドラーがないメソッドに 405 を返します(post() メソッドを追加します)。require_http_methods デコレーターも同様です。

  • Express: デフォルトでは、一致しないメソッドは 405 ではなく 404 になります。API で 405 を返したい場合は、Allow ヘッダーを設定するキャッチオールハンドラーを追加してください。

注意

すべてのルートですべてのメソッドを許可して 405 を解消するのはやめましょう。各エンドポイントが実際にサポートするメソッドだけを許可し、Allow ヘッダーを正確に保ってください。

Advertisement

解決策5:CORS プリフライト(OPTIONS)リクエストを処理する

ウェブページが JSON やカスタムヘッダーを使って別ドメインの API を呼び出すとき、ブラウザはまず OPTIONS プリフライトリクエストを送ります。API がその OPTIONS リクエストに 405 を返すと、本来のエンドポイントは正常に動くはずなのに、ブラウザは CORS エラーを報告して本来のリクエストを送りません。

それらのルートでは、API が OPTIONS に 204 または 200 で応答し、適切な Access-Control-Allow-Methods ヘッダーと Access-Control-Allow-Headers ヘッダーを返すようにします。ほとんどのフレームワークには、これを自動で行う CORS ミドルウェアがあります。たとえば DNS Robot 自身の DNS Lookup API はプリフライトに 204 と CORS ヘッダーで応答するので、どのサイトからでもブラウザから呼び出せます。

ヒント

DevTools(F12)→ ネットワーク で、すべてのリクエストを表示するフィルターを有効にし、失敗した呼び出しの直前にある OPTIONS リクエストを探してください。そのステータスを見れば、プリフライトが問題だったかどうかがわかります。

405 と 400、403、404、501 の違い

コード意味
405 Method Not AllowedURL は存在するが、このメソッドでは使えない
400 Bad Requestリクエスト自体の形式が不正
403 Forbiddenサーバーはリクエストを理解したが、アクセスを許可しない
404 Not Foundこの URL には何も存在しない
501 Not Implementedサーバーはどの URL でもこのメソッドをサポートしていない

関連ガイド:400 Bad Request、403 Forbidden、401 Unauthorized。

URL が何を返すかを確認する

DNS Robot の HTTP ヘッダーチェックは、任意の URL のステータスコードとレスポンスヘッダーを表示します。405 が返っているかを確かめ、その背後にあるサーバーソフトウェアも確認できます。

試す HTTP ヘッダーチェック

Advertisement

よくある質問

サーバーは URL を認識しているものの、使われた HTTP メソッドを受け付けないという意味です。たとえば、GET しか許可していないページに POST を送った場合です。レスポンスには、その URL が受け付けるメソッドを列挙した Allow ヘッダーが含まれているはずです。

関連ツール

HTTP Headers CheckRedirect CheckerSSL Certificate Check

関連記事

400 Bad Request とは?原因と解決方法403 Forbiddenエラーとは?原因と解決方法を徹底解説HTTP 401 Unauthorizedエラーとは?原因と解決方法を徹底解説

目次

  • 405 Method Not Allowed エラーとは?
  • 405 エラーの表示例
  • ステップ1:Allow ヘッダーを確認する
  • 訪問者の方へ
  • 解決策1:正しい URL に正しいメソッドを送る
  • 解決策2:nginx が静的ファイルへの POST に 405 を返す
  • 解決策3:IIS が PUT と DELETE をブロックする(WebDAV)
  • 解決策4:ルートハンドラーにメソッドを追加する
  • 解決策5:CORS プリフライト(OPTIONS)リクエストを処理する
  • 405 と 400、403、404、501 の違い
  • よくある質問