306 Unused: A Reserved Status Code
History of 306
In the early days of HTTP, there was a concept called "Switch Proxy" that would allow a client to switch to a different proxy for a request. The 306 status was intended to support this feature. However, the feature was never implemented in any significant client or server, and it was eventually removed from the specification.
Today, the code is simply listed as "unused" in the IANA HTTP Status Code registry. It is reserved to avoid accidental reuse for a different purpose, but it serves no functional role.
Current Status
- Reserved – the code is officially reserved and should not be used.
- Not implemented – no known client or server uses 306.
- Ignored – if a server sends 306, clients will treat it as an unknown status and typically handle it as a generic 3xx redirect or error.
What to Do If You Encounter 306
If you receive a 306 response (which is extremely unlikely), you should:
- Treat it as a temporary redirect (like 302) or ignore it.
- Check for a
Locationheader and follow it if present. - Log the occurrence, as it may indicate a misconfigured or legacy server.
Best Practices
Do not use 306 in your applications. If you need to indicate that a client should switch to a proxy, use a different approach (e.g., PAC files, system proxy settings, or application-level configuration).
Frequently Asked Questions
Can I use 306 for my own purposes?
No, it is officially reserved. Using it may cause unexpected behavior in clients, and it could conflict with future standards. Choose a different status code or use a custom header.
Why is 306 still reserved if it's unused?
It's reserved to avoid conflicts. If another standard tried to reuse 306 for a different purpose, there could be confusion. Keeping it unused ensures backward compatibility.
Is 306 ever sent by servers?
Virtually never. Some legacy proxy software may have supported it in the past, but no modern system uses it. You are unlikely to ever encounter a 306 response in the wild.