代码之家  ›  专栏  ›  技术社区  ›  Paul Biggar

用django-on-app引擎处理HTTP头请求的最佳实践

  •  8
  • Paul Biggar  · 技术社区  · 14 年前

    我在我的应用程序中收到了head请求,我想知道如何处理它们。选项包括:

    • 将它们转换为GET,正常处理GET,然后:
      • 剥去尸体(尽管我不知道怎么做- response.content = '' 似乎不会。
      • 似乎是应用引擎自动剥去了车身,发出了一个警告:“为了响应头部的请求而丢弃了意外的车身。”

    这看起来很干净,可以使用装饰器或中间件编写得很好。

    • 特别处理每个头请求:
      • 这意味着我可以避免一些(许多?)中的数据存储访问。病例。
      • 显然,有一个风险,即设置内容长度头的中间件将被这种方法阻止这样做。

    别的?我该怎么办?使用应用引擎在这里有什么不同吗?是否有细微的细节;如果有,是否有合适的中间件可供使用?若要转换为get,`request.method=“get”是否足够(似乎有效)?

    1 回复  |  直到 14 年前
        1
  •  11
  •   Adam Crossland    14 年前

    您是打算让应用程序处理head请求,还是这些请求来自某个匿名源?你当然没有义务遵守一个领导的要求。您只需返回状态代码405(不允许使用方法),并为allow头提供get或您要处理的任何内容。

    我认为手动将request.method设置为get是没有意义的;很可能,您只是返回了一个比请求者想要的更大的响应。他们只是想看到响应的标题。如果您不想处理头部,执行405并允许头部接近。

    一般来说,客户机发送一个head请求是因为他们试图在不需要的情况下聪明地不处理完整的响应。他们正在检查内容长度是否自上次看到响应以来发生了更改,或者他们想要查看上次修改或过期的标题。

    对于您的应用程序来说,优雅地处理head请求当然是行为良好的,但是您不必这样做。