【问题标题】:Sporadic wrong urls零星的错误网址
【发布时间】:2011-10-17 19:18:12
【问题描述】:

我们有一个基于 python/django 运行的应用程序。每当缺少链接 (404) 或服务器错误 (500) 时,我都会收到电子邮件。我注意到我得到了一些看起来像这样的链接:

Referrer: http://www.mywebsite.com/model/
Requested URL: /model/js/modernizr-1.7.min.cb14102011.js
User agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB7.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
IP address: 41.2.246.84

问题是请求的 url。它请求相对于当前目录的 js 文件,而不是绝对目录。奇怪的是我无法复制它,而且它每天会发生几次,即使网站上有许多不同的用户。丢失链接的后果有时也会导致 500 错误,具体取决于 url(由于我为应用程序定义的 django url 结构)。

以前有人见过这种问题吗?有什么我应该检查的东西可以解决这个问题吗?

编辑: js文件通过http://www.mywebsite.com/static/js/访问,同样的配置也适用于css文件。经过进一步调查,似乎“静态”部分已从 url 中删除。

编辑 (2) 我昨天犯了一个错误。 {{ STATIC_URL }} 不仅不会像设置文件中定义的那样通过,它还会被当前(相对)url 替换。即,在原始帖子中,“模型”应该是“静态的”,但它不会被替换。我仍然不知道为什么会发生这种情况。

【问题讨论】:

  • 我遇到了一个非常恼人的反复出现的问题,几乎相同,它通常会针对页面上的所有 url 使用 404 来轰炸我的所有图形文件。不幸的是,我没有给你解决方案。我改变了我的基本模板,问题似乎已经消失了,我还没有机会深入挖掘并找到罪魁祸首。非常有兴趣亲自听到这个解决方案:D
  • 你必须更详细地解释你的问题。请求 URL 应该是什么?你的静态文件服务是如何在 Django 中配置的?
  • 可能是发送这些请求的机器人。可以吗?
  • 它不是机器人,因为所有这些请求都发生在用户身份验证之后。即使直接调用 url,它也会被重定向到登录屏幕。
  • 没有显示 {{ STATIC_URL }} 的两个原因:您没有在 settings.py 文件中设置上下文处理器,或者您没有使用 RequestContext 呈现模板。

标签: django web-applications


【解决方案1】:

感谢丹尼斯和乔丹。你们的 cmets 帮了我很多。

对于我的场景,我注意到问题只发生在 1 个网址上。由于许多模板使用相同的基本模板。我排除了基本模板问题。我还检查了 url 的视图以查看是否正确添加了上下文(因为没有上下文, STATIC_URL 变量可能无法通过)。都很好。

我也只在日志中看到了 IE7。当我查看模板时,我注意到一个额外的结尾 " (即 class="bogus"" )。我认为额外的引用弄乱了模板,然后 IE7 无法渲染模板的其余部分。

我已经在生产中进行了更改,所以我不能 100% 确定我已经解决了问题,但我会在一天左右的时间内知道。

编辑: 我意识到,答案在于如果存在编码问题(即服务器抛出 500),则上下文不会正确加载,因此 STATIC_URL 不会被填充。这也意味着对于从 STATIC_URL 加载的任何文件,每个 500 错误都会有相应的 404 错误

【讨论】:

  • 很高兴听到这是怎么回事。让我们知道它是否可以解决问题。
猜你喜欢
  • 2023-03-07
  • 2015-03-20
  • 2013-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多