【问题标题】:perl parsing cgi parametersperl解析cgi参数
【发布时间】:2017-04-12 15:23:22
【问题描述】:

我记得在某处读到可以将参数传递给 perl cgi 脚本,如下所示: www.example.org/cgiscript/arg1/arg2/arg3

我不记得我在哪里读过它,搜索对我没有帮助,所以任何人都可以告诉我这是否真的有效,如果可以,如何?这是 mod_perl 的东西吗?

【问题讨论】:

    标签: perl cgi mod-perl


    【解决方案1】:

    是的。如果从表单的 URL 调用 CGI 脚本:

    http://example.com/path/to/script.cgi/foo/bar
    

    那么路径/foo/bar将在环境变量PATH_INFO中可用。

    如果您使用的是 CGI.pm,这也可以在 $q->path_info 中找到。如果你使用 mod_perl,Apache2::RequestRec 有同样的方法。

    【讨论】:

    • 太棒了,谢谢!它不是“标准”有什么原因吗?这种方法有什么大的缺点吗?
    • HTML <form> 元素将在查询字符串中传递参数,因此这是将参数传递给脚本的事实上的“标准”方式。从配置为使用它的脚本加载子资源时,您还必须使用绝对路径,因为任何相对路径都将相对于查询字符串的最后一部分。
    • 你能扩展最后一句话吗?然后脚本是否“认为”它在 /script.cgi/foo/bar 中运行?我想使用这种方法来确定要显示的内容,因为它在 URL 中似乎比 ?lang=foo;page=bar 更清晰
    • 示例:如果您从http://example.com/script.cgi/path/info 引用图像为<img src="image.jpeg">,浏览器将尝试从http://example.com/script.cgi/path/image.jpeg 加载它,这可能是不正确的。
    • 是否可以通过使用 chdir 或在解析后更改 PATH_INFO 来解决此问题?还是应该避免这种情况?
    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多