gpt4 book ai didi

django - 在 App Engine 上使用 Django 处理 HTTP HEAD 请求的最佳实践

转载 作者:可可西里 更新时间:2023-11-01 15:11:00 25 4
gpt4 key购买 nike

我在我的应用程序中收到 HEAD 请求,想知道处理它们的最佳方法。选项是:

  • 将它们转换为 GET,正常处理 GET,然后:
    • 剥离主体(虽然我不确定如何 - response.content = '' 似乎没有这样做。
    • app engine 似乎自动剥离了 body,发出警告“Drop unexpected body in response to HEAD request”

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

  • 专门处理每个 HEAD 请求:
    • 这意味着我可以在某些(很多?)情况下避免访问 DataStore。
    • 显然存在风险,设置 Content-length header 的中间件将被此方法阻止这样做。

还有吗?我该怎么做?使用 App Engine 会有所不同吗?是否有细微的细节?如果是这样,是否有合适的中间件可供使用?转成GET,`request.method = "GET"就够了吗(好像可以)?

最佳答案

您是想让您的应用程序处理 HEAD 请求,还是这些请求来自某个匿名来源?您当然没有义务遵守 HEAD 请求。您可以只返回状态代码 405(不允许使用方法),并为 Allow header 提供 GET 或您想要处理的任何内容。

我认为手动设置 request.method 为 GET 没有意义;很可能,您只是返回一个比请求者想要的更大的响应。他们只是想查看响应的 header 。如果您不想处理 HEAD,请执行 405 和 Allow header 方法。

通常,客户端发送 HEAD 请求是因为他们试图在不需要时聪明地不处理完整的响应。他们正在检查自上次看到响应以来 Content-Length 是否发生了变化,或者他们想查看 Last-Modified 或 Expires header 。

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

关于django - 在 App Engine 上使用 Django 处理 HTTP HEAD 请求的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977945/

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