81 Stimmen

Django gibt HTTP 301 zurück?

Ich habe eine Django-Ansicht, die HTTP 301 auf eine Curl-Anforderung zurückgibt:

grapefruit:~ pete$ curl -I http://someurl
HTTP/1.1 301 MOVED PERMANENTLY
Date: Fri, 16 Oct 2009 19:01:08 GMT
Server: Apache/2.2.9 (Win32) mod_wsgi/2.5 Python/2.6.2 PHP/5.2.6
Location: http://someurl
Content-Type: text/html; charset=utf-8

Ich kann den Inhalt der Seite nicht über curl abrufen. Wenn ich die Seite jedoch mit einem Browser besuche, sehe ich den Inhalt wie erwartet.

Irgendwelche Ideen?

Danke! Pete

233voto

Daniel Roseman Punkte 565786

Wahrscheinlich fordern Sie die URL ohne einen abschließenden Schrägstrich an und haben APPEND_SLASH in der Datei settings.py auf True (Standard) gesetzt, so dass Django auf die URL umleitet, die einen Schrägstrich enthält.

6voto

jaw Punkte 792

Für mich war es also eine Kombination aus folgenden Faktoren:

  • SecurityMiddleware aktiviert
  • SECURE_SSL_REDIRECT = True
  • Separater Webserver hatte ebenfalls SSL-Umleitung aktiviert

In diesem Fall übernimmt der Webserver bereits die Umleitung und leitet die Anfrage über HTTP an Django weiter, das dann wieder auf HTTPS umleitet, was in einer Endlosschleife endet.

In diesem Fall ist es also sicher, die SECURE_SSL_REDIRECT = False .

5voto

AbeEstrada Punkte 1050

Mein Problem war PREPEND_WWW, wenn es in localhost verwendet wird, gibt es einen 301-Fehler, ich habe gerade eine lokale Einstellungsdatei erstellt und PREPEND_WWW = False gesetzt

3voto

Hassek Punkte 8352

In meinem Fall ist die Kommentierung der SicherheitMiddleware über die settings.py Datei hat den Zweck erfüllt. Ich muss sagen, dass dies nur passiert, wenn ich die runserver Befehl (auch beim Testen). Bei Apache fällt er nicht in die Umleitungsschleife.

0voto

frimogen Punkte 1

Bei der Verwendung von postman funktionierte alles gut, aber wenn ich es vom Frontend anforderte, erhielt ich den 301-Fehler. Wahrscheinlich fehlt der abschließende Schrägstrich in der URL. Ich hatte das gleiche Problem und konnte es lösen, indem ich den Schrägstrich in die URL einfügte: ....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X