首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python cgi检测http请求类型(GET、HEAD等)

从python cgi检测http请求类型(GET、HEAD等)
EN

Stack Overflow用户
提问于 2009-09-13 13:12:31
回答 3查看 6.7K关注 0票数 12

怎样才能找到我的python cgi收到的http请求?对于HEAD和GET,我需要不同的行为。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-13 13:17:20

代码语言:javascript
复制
import os

if os.environ['REQUEST_METHOD'] == 'GET':
    # blah
票数 17
EN

Stack Overflow用户

发布于 2009-09-14 00:09:15

这不是对你问题的直接回答。但你的问题源于做错了事情。

不要编写Python CGI脚本。

编写mod_wsgi应用程序。更好的是,使用Python web框架。有几十种。选择一个像Werkzeug这样的。

WSGI标准(在PEP 333中描述)使得在web请求中查找内容变得非常容易。

mod_wsgi的实现比CGI更快、更安全。

web框架也比编写自己的CGI脚本或mod_wsgi应用程序简单。

票数 0
EN

Stack Overflow用户

发布于 2009-09-14 10:59:17

为什么需要区分GET和HEAD?

通常,您不应该区分HEAD请求,而应该像对待GET一样对待HEAD请求。这是因为HEAD请求将返回与GET完全相同的头。唯一的区别是不会有响应内容。但是,没有响应内容并不意味着您不再需要返回有效的Content-Length标头或其他依赖于响应内容的标头。

在不同的人指向你的mod_wsgi中,它实际上会故意将请求方法从HEAD更改为GET,在某些情况下是为了防止那些错误地对待HEAD的人。完成此操作的特定情况是注册了Apache输出过滤器。在这种情况下这样做的原因是因为输出筛选器可能希望看到响应内容,并从中生成额外的响应头。如果您决定不为HEAD请求生成任何响应内容,您将剥夺输出筛选器的内容,并且它们添加的headers可能与GET请求返回的内容不一致。这样做的最终结果是,您可以填充缓存和浏览器的操作。

这同样适用于Apache后面的CGI脚本,因为在这种情况下仍然可以添加输出过滤器。然而,对于CGI脚本,没有任何东西可以防止用户变得愚蠢,并为HEAD请求做不同的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1417715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档