HTTP 405 METHOD NOT ALLOWED

The URL exists but not for this method. Must send an Allow header. 405 belongs to the 4xx client error class and is defined in RFC 9110.

Zero retention: your headers never leave this browser. Verify it yourself in DevTools.

Loading the workbench.

About HTTP 405

What Does HTTP 405 Method Not Allowed Mean?

The URL exists but not for this method. Must send an Allow header. The code is registered with IANA and defined in RFC 9110.

Client error: the request has a problem, so it cannot be fulfilled as sent. Every code from 400 to 499 shares that general meaning, so a client that does not recognise 405 must treat it like 400.

When Do You See a 405 Response?

405 Method Not Allowed means the URL exists but does not support the method you used: a POST to a read-only page, a DELETE on a collection, or a PUT where only PATCH is implemented. It often appears when a form posts to a static file host, when a route is registered only for GET, or when a reverse proxy blocks certain methods. A missing trailing slash can also route a request to a handler that lacks the method.

How Do You Fix a 405?

Servers must include an Allow header listing the methods the resource does support, such as Allow: GET, HEAD. Clients should switch to one of those methods or check the API documentation for the right endpoint. If a CORS preflight OPTIONS request gets 405, the server needs to handle OPTIONS for that route, which the 2http CORS checker can confirm. A 405 is cacheable by default.

What Does a 405 Response Look Like?

HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS
Content-Type: application/json

405 is cacheable by default under RFC 9110: a browser or CDN may store it and reuse it even without explicit freshness headers, using a heuristic lifetime. Send Cache-Control to say exactly how long.

To inspect a real one without sending it anywhere:

  1. Copy the response headers from your browser Network tab, or from curl -i.
  2. Paste them into the Header decoder to see every header explained.
  3. Check caching in the Cache lane.

Which Status Codes Are Related to 405?

  • 404 Not Found: Nothing at this URL, or the server will not say whether there is.
  • 501 Not Implemented: The server does not support the method at all.
  • 400 Bad Request: The request is malformed: bad syntax, invalid framing, or an unreadable body.

Browse every code on the HTTP status codes page.

What Other Lanes Are in the Reference Section?

  • HTTP status codes: Every IANA-registered status code, with a page per code.
  • MIME types: File extensions to Content-Type, searchable both ways, plus a Content-Type parser.
  • HTTP methods: GET, POST, PUT, PATCH, DELETE and the rest: safe, idempotent, cacheable.

Elsewhere in 2http: Header decoder, Cookie decoder, Cache-Control decoder, CORS checker, User-agent parser, and all eleven lanes on the 2http home page. Part of the 2suite.io privacy-first ecosystem.

Frequently Asked Questions

Is the Allow header required on a 405?

Yes. RFC 9110 says the origin server must send Allow on a 405, listing the methods the target resource currently supports, even if the list is empty.

Why does my CORS preflight return 405?

The server does not handle the OPTIONS method on that route. Add an OPTIONS handler or CORS middleware so preflights get a 2xx with the right Access-Control headers.

Is HTTP 405 an error?

Yes. 405 is a client error response: the problem is in the request, so repeating it unchanged will usually fail again.

Is a 405 response cacheable by default?

Yes. RFC 9110 lists 405 as heuristically cacheable, so caches may store it without explicit headers. Use Cache-Control to control how long.

How Can You Verify That Nothing Leaves This Browser?

You do not have to take our word that your headers stay here. Developer tools show every request a page makes, so you can watch this page work and confirm that nothing is sent. The check takes under a minute.

  1. Open your browser developer tools with F12, or Cmd+Option+I on a Mac, and select the Network tab.
  2. Reload the page and let it finish. You will see the page's own files, its web fonts, and one anonymous page-view request. Nothing has been typed yet, so none of them can contain your headers.
  3. Click the clear icon in the Network tab so that the log is empty.
  4. Paste real headers into any lane and read the result.
  5. Look at the Network tab again. It is still empty. For extra proof, turn on offline mode after the page loads and every lane keeps working.

Only two things can add a line to that log, and neither carries your headers. Submitting the feedback form sends the vote and comment you typed. Typing characters in a script the page has not displayed yet, such as Cyrillic or Greek, can make the browser fetch the matching font file, and that request names only the font.

2http never sends a request on your behalf: the request builder writes code for you to run, and the meta inspector reads source you paste instead of fetching a URL. The production site also sends a Content-Security-Policy header that tells your browser to refuse connections to anywhere except this site and the anonymous analytics endpoint.

Was this helpful?