Hvorfor ikke min Django nettstedet returnere en 404 når sjekket med denne nettadressen parser?

stemmer
1

Her er en enkel python funksjon som sjekker om en gitt url er gyldig:

from httplib import HTTP
from urlparse import urlparse

def checkURL(url):
    p = urlparse(url)
    h = HTTP(p[1])
    h.putrequest('HEAD', p[2])
    h.endheaders()
    if h.getreply()[0] == 200:
        return 1
    else: return 0

Dette fungerer for de fleste områder, men med min Django-basert nettsted jeg får 200 statuskode selv når jeg legger inn en url som er helt klart feil. Hvis jeg ser den samme siden i en nettleser, får jeg en 404. For eksempel, neste side gir en 404 i en nettleser: http://wefoundland.com/GooseBumper

Men gir en 200 da sjekket med dette skriptet. Hvorfor?

Edit : Mens mopoke svar løste problemet fra Django siden av ting, det var også en feil i skriptet ovenfor :

i stedet for parsing url og deretter bruke

 h.putrequest('HEAD', p[2])

Jeg faktisk trengte å bruke url i anmodningen, som så:

h.putrequest('HEAD', url)

som løst problemet.

Publisert på 29/12/2009 klokken 23:22
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Din side er faktisk ikke returnerer en 404 statuskode:

alex@alex-laptop:~$ curl -I http://wefoundland.com/GooseBumper
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 30 Dec 2009 01:37:41 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Svarte 29/12/2009 kl. 23:38
kilden bruker

stemmer
1

Selv om innholdet sier 404, området tilbake 200 OK i overskriftene:

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 30 Dec 2009 01:38:24 GMT
Content-Type: text/html; charset=utf-8
Connection: close

Sørg for at svaret ditt bruker HttpResponseNotFound. f.eks:

    return HttpResponseNotFound('<h1>Page not found</h1>')
Svarte 29/12/2009 kl. 23:40
kilden bruker

stemmer
0

For å få en 404 for å bli returnert av Django format bruker HttpResponseNotFound stedet for HttpResponse, eller pass i 'status = 404' til HttpResponse konstruktøren.

Svarte 30/12/2009 kl. 00:02
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more