scriptName
и pathInfo
лучше всего понимаются, если принять во внимание исторический фон CGI, поскольку именно отсюда берутся эти поля.
С CGI-скриптами у вас естьструктура каталогов на стороне сервера, которая содержит CGI-скрипт в некотором месте.Для CGI работа веб-сервера заключается в сопоставлении URL-адресов в HTTP-запросах со сценариями 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/httpserver
Ринго, сопоставление имен сценариев вообще не выполняется, так как ваше приложение всегда считается работающим в корне (то есть соответствует * 1026).* URL-путь).Если ваше основное приложение делегируется другим приложениям JSGI, тогда вам нужно решить (и документально подтвердить), если и как вы установите scriptName
и pathInfo
.