If you've been digging into HTTP status codes, you've probably seen the usual suspects like 200 OK, 301 Moved Permanently, or 404 Not Found. But every once in a while, a strange one pops up like 305 Use Proxy.
This status code doesn't show up often in practice. In fact, it's so rare that many modern browsers don't even support it anymore. But if you're working with legacy systems, API debugging, or proxies, understanding 305 can be valuable.
In this blog post, we'll explore what the 305 Use Proxy status code means, how it was intended to work, reasons for its decline in usage, and its implications in modern web environments. If you ever need to simulate proxy-related responses like 305, you don't need to configure complex server setups. With Apidog, you can easily mock 305 responses, test proxy behaviors, and validate API requests in just a few clicks. Best part? You can download it for free and start experimenting today.
Now, let’s break down exactly what 305 Use Proxy means, why it exists, why it was deprecated, and how you can still test and learn from it.
What Is HTTP Status Code 305 Use Proxy?
The 305 Use Proxy status code is part of the HTTP/1.1 protocol defined in RFC 2616. It indicates that the requested resource must be accessed through the proxy specified in the response's Location
header.
The 305 Use Proxy status code is an HTTP/1.1 response that tells the client:
"You can’t access this resource directly. Instead, you must connect through the proxy specified in the response headers."
Here's what a theoretical 305 response looks like:
HTTP/1.1 305 Use Proxy
Location: <http://proxy.example.com:8080>
The key here is the Location
header. It specifies which proxy the client should use to reach the resource. This was designed to explicitly direct clients to intermediate proxy servers that might be required to access certain network locations or handle some special functionality.
For example, if a resource lives behind a corporate proxy or a caching service, a server could tell the client to go through that proxy for future requests.
The Origins of 305 and Why It Was Introduced
When the HTTP/1.1 specification was being developed, the web was growing quickly, and proxies were essential for security, caching, and access control.
The idea was simple:
- Servers could say, “This resource is only available if you connect via a proxy.”
- Clients would honor the instruction and reroute their requests through the proxy.
At the time, this seemed like a clever way to enforce proxy usage for certain resources.
How Does 305 Use Proxy Work?
Here’s a step-by-step example of how 305 was supposed to function:
Client requests a resource directly:
GET /secret-data HTTP/1.1
Host: example.com
Server responds with 305 Use Proxy:
HTTP/1.1 305 Use Proxy
Location: <http://proxy.example.com:8080>
Client resends the request but this time through the proxy server specified.
This flow, in theory, allowed servers to enforce proxy-only access without manual client configuration. Unlike other redirections like 301 or 302 that point to alternative resource locations, 305 specifically instructs clients to route the request via a proxy.
Why Did 305 Use Proxy Exist?
Back in the early days of the web, managing network routes and proxies was less automatic and user-friendly than today.
305 was introduced to give servers a direct way to enforce proxy usage helping organizations control traffic flows, enforce caching policies, or route requests via filtering services.
The idea was to provide a standardized response that clients could understand and follow to perform proxying correctly.
Why 305 Was Deprecated (Security Concerns)
Unfortunately, theory and practice didn’t align well here.
The 305 Use Proxy status code was officially deprecated because of major security issues:
- A malicious server could send a 305 response pointing to a rogue proxy.
- The proxy could then intercept, log, or modify all of the client’s traffic.
- This opened the door to man-in-the-middle (MITM) attacks.
Because of these risks, browsers like Chrome, Firefox, and Internet Explorer eventually stopped supporting 305 entirely.
Today, it’s considered unsafe to rely on this mechanism.
Why Is 305 Use Proxy Considered Obsolete?
While 305 had a seemingly useful purpose, it is rarely used today for multiple reasons:
- Security risks: Allowing servers to dictate proxies can enable malicious redirection, man-in-the-middle attacks, or privacy violations.
- Browser support issues: Major browsers like Chrome, Firefox, and Safari stopped supporting or disabled automatic handling of 305 responses.
- Better proxy mechanisms: Modern networking uses configured proxies, VPNs, or transparent proxies managed outside HTTP responses.
- Lack of demand: Proxies are typically set at client or network level, not dictated dynamically by servers.
Because of these reasons, the HTTP/1.1 specification (RFC 7231) now discourages the use of 305, and many clients ignore it.
What Does a 305 Response Look Like?
A typical 305 response contains the status and a Location
header with the proxy URL, such as:
textHTTP/1.1 305 Use Proxy Location: <http://proxy.example.com:8080/> Content-Length: 0
This instructs clients to use http://proxy.example.com:8080/
as the proxy for accessing the requested resource.
305 vs Other Redirection Status Codes
Understanding 305 in relation to other redirect codes helps clarify its unique role:
Status Code | Description | Client Action |
---|---|---|
301 Moved Permanently | Permanent redirect to a new resource | Redirect directly to new URL |
302 Found | Temporary redirect | Redirect directly (GET or original method) |
303 See Other | Redirect and force GET method | Redirect to GET resource |
305 Use Proxy | Use the proxy specified in Location header | Route request through the proxy |
307 Temporary Redirect | Temporary, method-preserving redirect | Redirect to new location with same method |
While 301, 302, 303, and 307 redirect clients to different URLs directly, 305 specifically enforces a proxy path.
Real-World Examples of 305 Use Proxy
Even though browsers dropped support, some legacy environments once used 305.
- Corporate intranets: Where certain sensitive resources had to be accessed through a company proxy.
- Academic networks: Libraries used proxies to restrict access to licensed content.
- Experimental API gateways: Some API frameworks briefly toyed with using 305 for proxy enforcement.
Today, though, most of these use-cases rely on proxy configuration at the network or client level, not HTTP responses.
Modern Alternatives to 305 Use Proxy
Because 305 is mostly deprecated, today’s proxy usage is handled by:
- Browser or system proxy settings: Configured manually or via scripts (PAC files).
- Transparent proxies: Invisible to clients, intercepting requests on the network.
- VPNs or network firewalls: Governing traffic routing without HTTP-level instructions.
These approaches are more secure and flexible than HTTP-enforced proxies with 305.
How Proxies Work in HTTP Communication
To understand 305 better, let’s step back and look at what proxies do:
- Forward proxies → Sit between a client and the internet. Used for caching, filtering, or anonymity.
- Reverse proxies → Sit between the internet and a server. Used for load balancing, SSL termination, or security.
305 was meant for forward proxy enforcement. Instead of the client choosing a proxy, the server dictated it.
Why Developers Rarely Encounter 305 Today
In practice, most developers will never see a 305 response in modern projects because:
- Browsers don't support it.
- APIs don't use it.
- Network administrators configure proxies outside of HTTP.
That said, you may encounter 305 in old documentation, legacy codebases, or academic discussions.
How to Handle 305 Responses as a Developer
If you encounter 305 responses, for example, during legacy system integration or specific edge cases, here's what you should do:
- Be cautious when accepting 305 redirects to prevent security risks.
- Validate the
Location
header carefully. - Consider ignoring 305 responses if your client or browser doesn’t support them.
- Use network or browser proxy configuration to manage proxy use instead.
- Use tools like Apidog to inspect and debug 305 responses in APIs or network requests.
305 Use Proxy and API Testing
If you're an API developer or tester, you might wonder:
"Why should I care about a deprecated status code?"
Good question! Even though 305 isn’t practical today, it teaches important lessons about:
- Proxy behavior in HTTP.
- Security risks of server-controlled routing.
- How clients handle unsupported status codes (they should ignore or reject them).
For testing scenarios, you may still want to simulate 305 responses to see how your client reacts.
Testing 305 Use Proxy with Apidog

Apidog is a fantastic tool to help you deal with all kinds of HTTP status codes, including the rare 305.
Here's why Apidog makes sense for testing and debugging 305:
- Send requests and capture detailed HTTP response headers.
- View the
Location
header to identify proxy URLs. - Control follow-up requests to test proxy behaviors.
- Automate tests, ensuring APIs behave correctly with proxy instructions.
With Apidog, you don't need to set up an actual proxy server, just mock it and see what happens. Download Apidog for free to get hands-on experience with complex HTTP responses, making your workflow more effective.
SEO Implications of 305 Use Proxy
From an SEO standpoint, 305 is irrelevant today because search engine crawlers don’t support it.
If your server mistakenly returns 305, crawlers will likely treat it as an error and stop indexing the page.
This is yet another reason why you should avoid using 305 in production.
Best Practices for Handling Proxy Requirements
Since 305 is deprecated, what should you do instead?
- Configure proxies at the network or client level (not via HTTP).
- Use firewall rules or VPNs to enforce secure routing.
- Document proxy requirements for API clients.
- Use reverse proxies (like Nginx, HAProxy) for modern deployments.
Security Implications of Using 305
The main reason 305 usage faded away lies in security considerations:
- Clients automatically obeying 305 could be forced through malicious proxies.
- Privacy and data integrity can be compromised.
- Hence, browsers today don’t automatically follow 305 redirects.
When designing APIs or web services, do not rely on 305 for proxy enforcement.
Alternatives to 305 Use Proxy
Instead of relying on 305, developers now use:
- Proxy auto-config (PAC) files: For automatic proxy settings.
- WPAD (Web Proxy Auto-Discovery Protocol): For enterprise networks.
- Transparent proxies: Configured at the firewall level.
- Application-level proxies: Built directly into software clients.
Summary of Key Points About 305 Use Proxy
- It instructs the client to use a proxy server specified in the
Location
header. - Primarily included in early HTTP/1.1 specs but now discouraged.
- Rarely implemented by modern browsers.
- Generally superseded by client or system-level proxy settings.
- Has notable security concerns limiting its use.
- Useful to understand for historical context or niche applications.
Conclusion: Why Understanding 305 Use Proxy Still Matters
The 305 Use Proxy status code is a fascinating piece of HTTP history. While it promised a neat way to enforce proxy usage, it ultimately failed due to security risks.
Even if you rarely encounter HTTP status code 305 Use Proxy today, it’s a meaningful part of HTTP history and proxy control. By grasping its purpose, behavior, and limitations, developers gain a broader understanding of how web communications and redirection mechanisms evolved.
Today, it’s more of a curiosity than a practical tool. But as a developer, understanding it helps you appreciate the evolution of web standards.
Moreover, if you ever work with legacy systems, proxies, or advanced API environments, knowing about 305 can save time troubleshooting unusual behavior.
And if you want to experiment with 305 in a safe, controlled environment, you don’t need to spin up old browsers or legacy systems. Just use Apidog to mock and test it easily. To help you explore HTTP status codes like 305 Use Proxy more effectively, download Apidog for free. Apidog equips you with powerful testing, debugging, and documentation tools to confidently manage your APIs and HTTP workflows no matter how complex. It’s the simplest way to build resilient, future-proof applications.