gpt4 book ai didi

javascript - JSGI/Level0/A/Draft2中的scriptName和pathInfo有什么区别?

转载 作者:行者123 更新时间:2023-11-30 18:40:10 25 4
gpt4 key购买 nike

我正在使用 RingoJS 0.8,我在 ringo/httpserver 实例之上创建了一个基本的 jsgi 应用程序。我试图根据规范了解 jsgi 请求对象中每个键的用途:http://wiki.commonjs.org/wiki/JSGI/Level0/A/Draft2 ;我理解了大部分键,保存 scriptName 键。

当我运行我的应用程序并打印每个键的值时,scriptName 总是返回一个空字符串,而 pathInfo 返回 URL 的路径名。我试图了解 scriptName 实际上应该传达什么以及它与 pathInfo 有何不同。

最佳答案

scriptNamepathInfo 在考虑 CGI 的历史背景时最好理解,因为这就是这些字段的来源。

使用CGI 脚本,您有一个服务器端目录结构,其中在某个位置包含一个CGI 脚本。对于 CGI,Web 服务器的工作是将 HTTP 请求中的 URL 映射到 CGI 脚本。现在这个映射过程基本上将 URL 中的路径拆分为组件,然后尝试(从根目录开始)将每个组件映射到目录名或文件名。一旦组件与文件名匹配,就会找到要执行的 CGI 脚本。导致文件名并包括文件名的所有 URL 路径组件随后作为“脚本名称”传递给 CGI,其余(不匹配的)URL 路径组件作为“路径信息”传递给 CGI 脚本。

让我们用一个例子来说明这个抽象的描述。假设您的文件系统中存储了一个 CGI 脚本,位于 /x/y/foo/bar.cgi,其中 /x/y/ 是您使用的根目录将请求映射到的网络服务器。如果请求到达 URL /foo/bar.cgi/baz/qux,网络服务器会将此请求与 /x/y/foo/bar.cgi 匹配> CGI 脚本,将 /foo/bar.cgi 作为“脚本名称”传递,将剩余的 /baz/qux 作为“路径信息”传递给此 CGI 脚本。

但是,在 JSGI 中,如何将 URL 映射到 JSGI 应用程序基本上取决于服务器潜在的中间件。 可能有一个基于模拟文件系统的查找机制在起作用,其中将原始请求的路径拆分为“脚本名称”和“路径信息”仍然有意义。或者可能没有。

如果您在 Ringo 的裸机 ringo/httpserver 上运行,则根本不会进行任何脚本名称映射,因为您的应用程序始终被视为在根目录下运行(即对应于 / 网址路径)。如果您的主应用委托(delegate)给其他 JSGI 应用,则由您决定(并记录)是否以及如何设置 scriptNamepathInfo

关于javascript - JSGI/Level0/A/Draft2中的scriptName和pathInfo有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080581/

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