>

IIS теперь тоже поддерживается

14 февраля 2008 // Хельги

Для портирования под Internet Information Services в движке пришлось поменять до смешного немного. Более того, самый главный баг вообще бы не вылез, если бы я адаптировал транк, а не ветку 0.5.10/onr. Баг был связан с тем, что IIS, в отличие от apache и xitami, вешается при попытке повторного вызова cgi.FieldStorage() при POST-запросах. На других двух серверах просто возвращается пустая форма. В транке этот баг не вылез бы потому, что там я уже переделал всё ядро, и двойной вызов там убран.

Второй баг связан с тем, как IIS трактует переменную окружения PATH_INFO. Рассмотрим три сервера по порядку.

Xitami

Под xitami все URL’ы выглядят так:

http://example.com/cgi-bin/sitename/?v=abc (GET)
http://example.com/cgi-bin/sitename/index.py (POST)

Соответственно, PATH_INFO == "" (вполне логично).

apache

На warmland.ru я использую mod_rewrite, и адреса переписываются так:

http://example.com/?v=abc
->  http://example.com/cgi-bin/sitename/?v=abc (GET)
http://example.com/index.py
->  http://example.com/cgi-bin/sitename/index.py (POST)

И тут PATH_INFO == "".

IIS

IIS же считает, что все пути, по которым лежат сценарии, виртуальны.

http://example.com/?v=abc (GET)
http://example.com/index.py (POST)
http://example.com/dir/?v=abc (GET)
http://example.com/dir/index.py (POST)

В первых двух примерах PATH_INFO == "index.py". Во вторых двух PATH_INFO == "dir/index.py". То есть IIS не только рассматривает путь как PATH_INFO, но и раскрывает directory default. Почему — неясно. Ясно только, что мои идеи использовать PATH_INFO накрылись медным тазом. Если я хочу поддерживать все три сервера, то надо быть очень конвенциональным — никаких рерайтов, никаких PATH_INFO.

Тэги: indiana, webdev
Комментариев нет

Кондуктора вешать сюдаГрустная судьба «Моторолы»

Написать комментарий

На этот адрес будут приходить только уведомления о новых комментариях к этой записи.
Чтобы отправить комментарий, введите сюда слово «человек».
« »  
Высота поля:
Разрывы строк (Enter) будут сохранены. HTML не работает. Гиперссылки: вставьте URL.

Ваш комментарий появится после одобрения модератором.