У меня есть существующее веб-приложение cgi, которое работало нормально, но чье поведение изменилось.

Одна из программ cgi (при определенных условиях) возвращает заголовок Location, чтобы вызвать перенаправление.

Заголовок Location никогда не попадает в веб-браузер - вместо этого Apache, похоже, возвращает содержимое страницы, на которую перенаправляет заголовок Location.

К сожалению, эта страница содержит javascript, который использует строку запроса внутри заголовка Location, но с этим новым поведением строка запроса пуста, потому что браузер все еще думает, что местоположение является исходным сценарием cgi.

Почему изменилось их поведение и что я могу сделать, чтобы это не произошло?

1 ответ1

1

Согласно этому ответу, CGI определяет два разных типа перенаправлений: внутренний и внешний.

Внутренние перенаправления (невидимые для браузера) используются при указании URL-адреса без схемы и хоста (например, otherpage.html или /index.html) в заголовке Location .

Внешние перенаправления (выполняемые браузером) используются только при указании абсолютного URL-адреса (т. http://www.example.com/some/other/page). Абсолютные URL-адреса должны начинаться со схемы (т. http).

RFC 3875 содержит соответствующую документацию:

Поле заголовка Location используется для указания серверу, что скрипт возвращает ссылку на документ, а не на фактический документ (см. Разделы 6.2.3 и 6.2.4). Это либо абсолютный URI (необязательно с идентификатором фрагмента), указывающий, что клиент должен получить ссылочный документ, либо локальный путь URI (необязательно со строкой запроса), указывающий, что сервер должен извлечь упомянутый документ и вернуть это клиенту как ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .