代码之家  ›  专栏  ›  技术社区  ›  Nikolai Prokoschenko

为什么Django/mod\wsgi会在特定的URL长度上崩溃?

  •  1
  • Nikolai Prokoschenko  · 技术社区  · 16 年前

    这里有一个奇怪的问题:当给定给Apache的URL的路径部分的长度在[23..26,30..33]中时,我从为Django 1.1应用程序提供服务的Apache得到一个500错误代码。例如, http://server/012345678901234567890123 结果在 http://server/012345678901234567 没有。

    每500个错误也会导致“无法验证请求来源” mod_wsgi 在日志里。这个错误不会发生在只有Apache的url上,比如图像,它只发生在Django上。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Graham Dumpleton    16 年前

    把这个放到googlegroups上合适的mod\uwsgi列表中,详细说明您正在使用的Apache、Python和mod\uwsgi版本。同时指出您正在使用的apachempm和任何其他非标准Apache模块。最好说明是使用32位还是64位应用程序。

    最近还有一个人报告了这件事。不过,您似乎已经能够将其与特定的URL长度联系起来,这是以前从未有人提出过的,至少是一个线索。

    注意,即将去度假。你只有不到8个小时的时间让我再认真地看一眼,在那之后我会很辛苦,直到我回来。

        2
  •  0
  •   Jordan Reiter    16 年前

    这是否可能是应用程序代码中的某个错误?

    更改站点的apache设置,以便WSGI创建自己的错误日志

    LogLevel info
    ErrorLog /tmp/error_log
    

    那就跑吧

    tail -f /tmp/error_log
    

    然后尝试加载一个长URL。希望错误消息会出现在日志文件中。至少,它应该指出真正的错误是什么。