305 - Use Proxy
HTTP 305 Use Proxy is deprecated and should not be generated in modern HTTP systems.
Last reviewed: February 1, 2026|Source-backed guidance under our editorial policy
Start Here
Use the closest compare guide, playbook, or adjacent error page to narrow the decision faster before you start changing production systems.
This page is part of the Error Reference library. Learn more about the project or report a correction.
What Does Use Proxy Mean?
A deprecated proxy directive leaked into runtime behavior, creating compatibility and security risks for modern clients.
Common Causes
- -Legacy enterprise proxy configuration still emits Use Proxy for intranet route segments in old environments.
- -Obsolete gateway policy maps certain paths to explicit proxy instructions despite modern deprecation of code.
- -Compliance middleware attempts to force dedicated proxy hop and responds with historical 305 behavior.
How to Fix Use Proxy
- 1Identify and stop the component emitting 305, then replace it with supported proxy or redirect behavior.
- 2Remove legacy Use Proxy configuration from gateway, origin, and intermediary routing policies.
- 3Validate clients operate with modern proxy settings or 407 challenge flows instead of deprecated 305.
Step-by-Step Diagnosis for Use Proxy
- 1Capture the full request path and identify which hop emits deprecated 305.
- 2Audit gateway/reverse-proxy/middleware configs for stale Use Proxy response templates.
- 3Inspect client proxy bootstrap assumptions and remove logic that depends on obsolete status behavior.
- 4Retest path after config cleanup to confirm standards-compliant responses only.
Deprecated Proxy Behavior Source Audit
- -Trace status emission origin (example: legacy egress filter still returns 305 when proxy unavailable).
- -Inspect inherited config snippets from old platform templates (example: deprecated default error map bundled with migration artifact).
Modern Proxy Model Compatibility Checks
- -Verify supported alternatives (example: 407 challenge flow for authenticated proxy access).
- -Validate PAC/env proxy config handling in clients (example: runtime assumes server-driven 305 rather than explicit proxy config).
Implementation Examples
curl -i -X GET https://api.example.com/v1/resource
# Response:
# HTTP/1.1 305 Use Proxy
# {"error":"Use Proxy","code":"305"}const response = await fetch('https://api.example.com/v1/resource', {
method: 'GET',
headers: { 'Accept': 'application/json' }
});
if (response.status === 305) {
console.error('Handle 305 Use Proxy');
}import requests
response = requests.get(
'https://api.example.com/v1/resource',
headers={'Accept': 'application/json'}
)
if response.status_code == 305:
print('Handle 305 Use Proxy')Seen in Production
Legacy appliance still emits 305 in one datacenter
Frequency: common
Example: Traffic through one network segment receives deprecated Use Proxy response while other regions behave normally.
Fix: Remove obsolete appliance policy and unify proxy behavior across all network paths.
Old integration test stub leaks into production gateway config
Frequency: rare
Example: Stubbed 305 response intended for migration testing remains active after deployment.
Fix: Separate test and production config bundles and require signed config promotion checks.
Debugging Tools
- -curl -IL to inspect redirect hops and Location headers
- -Browser DevTools Network tab (Preserve log enabled)
- -CDN and reverse-proxy access logs
- -Redirect-chain checks in CI
How to Verify the Fix
- -Run endpoint smoke tests and confirm no 305 responses appear across browser, API, and service clients.
- -Verify expected statuses such as 200, 3xx, or 407 are returned according to the intended proxy model.
- -Review edge and application logs to confirm deprecated 305 emissions remain at zero over time.
How to Prevent Recurrence
- -Add linting and policy checks that fail builds when deprecated HTTP statuses like 305 are configured.
- -Keep proxy and gateway config under version control with mandatory review for status code behavior.
- -Run synthetic proxy-path tests after network or security changes to catch deprecated responses early.
Pro Tip
- -apply a denylist of deprecated statuses at ingress so any accidental 305 emission is blocked and alerted immediately.
Official References
Provider Context
This guidance is specific to HTTP services. Always validate implementation details against official provider documentation before deploying to production.