Допустимо ли в соответствии со стандартом HTTP / 1.1 отправлять URI [в заголовке местоположения] без имени хоста и протокола?
Нет, из-за того, как 'absoluteURI' определено. Поскольку вы смотрите на RFC, давайте придерживаться их в этом обсуждении. Резервное копирование:
Что именно они подразумевают под «абсолютным URI»?
Это определено в другом месте. Это происходит часто .
Теперь я хочу перенаправить на URI на том же сервере, и я знаю путь. Это абсолютный URI (он начинается с корня), но без имени хоста и протокола.
Это может быть абсолютный путь , но это не делает его абсолютным URI ].
Из раздела 3.2.1 HTTP / 1.1 RFC, Общий синтаксис:
Для получения полной информации о синтаксисе и семантике URL см. " закон в действии. Вы сделали что-то не так, но браузер все равно это понял. Вы должны следовать ему и отправить правильный абсолютный URI с заголовком
Location:
. Если это не может быть легко построено в вашей среде, что-то не так; Я не могу вспомнить ни одного веб-приложения, которое я видел, где информацию о хосте нельзя было бы настроить или получить.
Похоже, они не сказали явно, следует ли включать имя сервера и протокол. Если вы знаете, кто будет использовать вашу HTTP-службу, вы можете просто протестировать ее и посмотреть, работает ли она.
Кроме того, нетрудно узнать запрошенный URL-адрес на сервере и создать абсолютный URL-адрес, который включает протокол и имя хоста. . Например, вы можете использовать массив $ _ SERVER
в PHP. Другие веб-языки должны иметь аналогичные предопределенные переменные.