HTTPError.net

The fastest way to diagnose, understand, and fix any HTTP status code

303 See Other

Fault: Neither
TL;DR

Redirect to another resource using GET method.

The response to the request can be found at another URL using GET.

What HTTP 303 See Other Means

The response to the request can be found at another URL using GET.

Redirect to another resource using GET method.

Common Causes

What Visitors Should Do

Notes for Developers

303 vs Other Redirects

CodePermanent?Method on redirectTypical use
301YesMay change POST to GETMoved pages, domain or HTTPS migrations
302NoMay change POST to GETShort-term moves, login redirects
303NoAlways GETRedirect after a form POST
307NoMust keep method and bodyTemporary moves of APIs or forms
308YesMust keep method and bodyPermanent moves of APIs or forms

RFC 9110 allows clients to switch a POST to GET on a 301 or 302 for historical reasons, which is why 307 and 308 exist.

Returning a 303 See Other (Code Examples)

If you build APIs or web apps, here is how to send an HTTP 303 response and how to test for it:

Node.js (Express)

app.get('/resource', (req, res) => {
  res.status(303).json({ error: 'See Other' });
});

Python (Flask)

@app.route('/resource')
def resource():
    return jsonify(error='See Other'), 303

PHP

<?php
http_response_code(303);
header('Content-Type: application/json');
echo json_encode(['error' => 'See Other']);

Check the status with curl

curl -I https://example.com/resource
# Look for: HTTP/1.1 303 See Other

Frequently Asked Questions

What does HTTP 303 See Other mean?

Redirect to another resource using GET method. In short: The response to the request can be found at another URL using GET.

How should I handle an HTTP 303 See Other response?

Use after POST to redirect to GET resource. Prevents form resubmission.

Official Specification

The 303 See Other status code is defined in RFC 9110 Section 15.4.4.

View the IANA HTTP Status Code Registry →