gpt4 book ai didi

python - 为什么我的 Django 站点在使用此 URL 解析器检查时不返回 404?

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:41 27 4
gpt4 key购买 nike

这是一个简单的 python 函数,用于检查给定的 url 是否有效:

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

这适用于大多数网站,但对于我基于 Django 的网站,即使我输入的网址明显错误,我也会收到 200 状态代码。如果我在浏览器中查看同一页面,则会收到 404 错误。例如,以下页面在浏览器中显示 404 错误:http://wefoundland.com/GooseBumper

但使用此脚本检查时给出 200。为什么?

编辑:虽然 mopoke 的答案从 Django 方面解决了问题,但上面的脚本中也存在一个错误:

而不是解析 url 然后使用

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

我实际上需要在请求中使用 url,如下所示:

h.putrequest('HEAD', url)

解决了这个问题。

最佳答案

虽然内容显示 404,但网站在 header 中返回 200 OK:

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

确保您的响应使用 HttpResponseNotFound。例如:

    return HttpResponseNotFound('<h1>Page not found</h1>')

关于python - 为什么我的 Django 站点在使用此 URL 解析器检查时不返回 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977938/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com