--- title: "417 Expectation Failed — what it means and how to fix it" description: "The server cannot meet the requirement set in the request's Expect header. What causes an HTTP 417, what to try as a visitor, and what to check if it is your own site." url: https://atoneplace.net/error/417/ site: "At One Place" --- # HTTP 417 — Expectation Failed **HTTP 417: Expectation Failed** The server cannot meet the requirement set in the request's Expect header. ## What 417 actually means The only `Expect` value ever defined is `100-continue`, so in practice this means a server or proxy in the path will not play the "send me your headers first" game. It typically appears when a client that adds `Expect: 100-continue` automatically — curl does this for bodies over 1 KB — talks to an older proxy or a server that does not implement it. The fix is to stop sending the expectation. ## Common causes - A proxy or server that does not support `Expect: 100-continue` - curl adding the header automatically for a large body - A legacy HTTP/1.0 intermediary in the request path ## If you're just trying to view the page 1. Nothing in a browser — browsers do not send `Expect` headers 2. If a desktop tool produced it, check for an update; older HTTP libraries hit this more often ## If it's your site 1. Disable the expectation: with curl, add `-H "Expect:"` to send an empty header and suppress it 2. In .NET, set `ServicePointManager.Expect100Continue = false` 3. On the server, accept and honour `100-continue` rather than rejecting it — it is cheap to support ## Reference - **Status code:** 417 - **Reason phrase:** Expectation Failed - **Category:** 4xx — Client Error - **Defined in:** RFC 9110 §15.5.18 ## Common questions ### What does HTTP 417 mean? The server cannot meet the requirement set in the request's Expect header. The only `Expect` value ever defined is `100-continue`, so in practice this means a server or proxy in the path will not play the "send me your headers first" game. It typically appears when a client that adds `Expect: 100-continue` automatically — curl does this for bodies over 1 KB — talks to an older proxy or a server that does not implement it. ### How do I fix a 417 error? Nothing in a browser — browsers do not send `Expect` headers ### Is 417 a client error or a server error? 417 is in the 4xx range, which means client error. The request itself was the problem, so retrying it unchanged will usually return the same code. ## Related pages - [404 Not Found](https://atoneplace.net/error/404/) - [403 Forbidden](https://atoneplace.net/error/403/) - [401 Unauthorized](https://atoneplace.net/error/401/) - [429 Too Many Requests](https://atoneplace.net/error/429/) - [400 Bad Request](https://atoneplace.net/error/400/) - [413 Content Too Large](https://atoneplace.net/error/413/) - [422 Unprocessable Content](https://atoneplace.net/error/422/) - [405 Method Not Allowed](https://atoneplace.net/error/405/) - [409 Conflict](https://atoneplace.net/error/409/) - [415 Unsupported Media Type](https://atoneplace.net/error/415/) - [408 Request Timeout](https://atoneplace.net/error/408/) - [410 Gone](https://atoneplace.net/error/410/) ## Sources - Hypertext Transfer Protocol (HTTP) Status Code Registry — IANA (https://www.iana.org/assignments/http-status-codes/) - RFC 9110: HTTP Semantics — IETF (https://www.rfc-editor.org/rfc/rfc9110.html)