回答
import os
if os.environ['REQUEST_METHOD'] == 'GET':
# blah
为什么你需要区分GET和HEAD?
通常情况下,你不应该区分,应该像GET一样处理HEAD请求。这是因为HEAD请求是为了返回与GET完全相同的头文件。唯一的区别是不会有任何回应内容。仅仅因为没有响应内容,但并不意味着您不必再返回有效的Content-Length头或其他头,这些头依赖于响应内容。
在mod_wsgi中,各个人都指着你,在某些情况下,它实际上会故意将请求方法从HEAD更改为GET,以防止错误地对待HEAD的人以不同的方式处理。完成此操作的具体情况是Apache输出过滤器已注册的位置。在这种情况下完成它的原因是因为输出过滤器可能希望看到响应内容,并从中产生额外的响应标头。如果您决定不打算为HEAD请求生成任何响应内容,您将剥夺内容的输出过滤器,并且它们添加的标头可能不会同意从GET请求返回的内容。这最终的结果是你可以填充缓存和浏览器的操作。
同样可以适用于Apache后面的CGI脚本,因为在这种情况下输出过滤器仍然可以添加。对于CGI脚本来说,没有任何措施可以防止用户愚蠢,并为HEAD请求做不同的事情。
一些有效的链接检查程序使用HEAD方法访问我网站上的资源。它们是无害的。 OTOH,一个gazillion机器人使用GET来访问我的网站。这就是为什么我需要分辨差异。 – cfischer
如果您正在收到您不想要的请求,您应该尝试通过使用重写模块或允许检查标头的其他模块查看代理字符串来尝试在服务器上阻止它。为什么它仍然需要通过CGI脚本? –
- 1. HEAD请求对GET请求
- 2. Go http请求检测POST为GET
- 3. HEAD GET解码请求
- 4. 替换HEAD的GET请求
- 5. HTTP GET请求()
- 6. 跨域'Http Head'请求
- 7. HTTP HEAD请求和System.Web.Mvc.FileResult
- 8. HTTP响应内容类型与HEAD请求不同
- 9. Android - HTTP GET请求
- 10. 假HTTP GET请求
- 11. Android - HTTP GET请求
- 12. HTTP请求和GET
- 13. JavaScript中的HTTP GET请求?
- 14. Rails 3中的HEAD HTTP请求
- 15. 如何从PHP中的AngularJS GET HTTP请求中检索参数?
- 16. 类型不匹配从C#Http请求#
- 17. 如何将Python中的HEAD HTTP请求发送到Amazon S3?
- 18. 检查挂起的AJAX请求或HTTP GET/POST请求
- 19. Python CGI同时AJAX请求
- 20. 从Restlet请求获取HTTP GET参数
- 21. Python检测到kill请求
- 22. 为什么将HEAD请求转换为GET请求很有用?
- 23. 解释HTTP“GET”请求
- 24. 厨师HTTP请求GET/POST
- 25. ECONNREFUSED,节点HTTP GET请求
- 26. HTTP-GET请求与Titanium.Network.createHTTPClient()coutchdb?
- 27. 查看HTTP GET请求Cookie
- 28. 及在HTTP GET请求
- 29. HTTP GET请求结构
- 30. Http请求POST vs GET
你为什么不使用mod_wsgi? –
因为我不知道它是什么。 O :-) – cfischer