Перенаправление на FTP-адрес с именем пользователя и паролем в Safari

У меня проблема с Safari, которую я не смог решить:

<?php
    header("Location: ftp://username:[email protected]/somefile.zip");
?>

Этот фрагмент кода работает в каждом браузере (Fx, Chrome, IE7-9), но не в последнем Safari, который говорит мне, что у меня нет разрешения на просмотр страницы (то есть она перенаправляется на верную страницу [somedomain.org] с правильным протоколом, но не обрабатывает данные аутентификации).

Интересно, что это работает, когда я копирую его непосредственно в адресную строку или когда я вставляю <a> -tag клик по нему. Является ли это ошибкой Safari, или я что-то пропустил здесь, что игнорируют другие браузеры? И если это ошибка Safari, есть ли какое-то обходное решение?

Ответы

Ответ 1

Try:

header('HTTP/1.1 301 Moved Permanently');
header('Location: ftp://username:[email protected]/somefile.zip');

если он не работает, попробуйте:

echo <<< EOF
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=ftp://username:[email protected]/somefile.zip">
EOF;

Или:

header ('Location: ftp://username:[email protected]/somefile.zip');   
header ('Content-Length: 0');

Последнее решение, которое я получил от: http://www.ultrashock.com/forum/viewthread/90424/

Ответ 2

echo "window.location = 'ftp://имя пользователя: пароль@somedomain.org/somefile.zip';";

Попробуйте переадресовать JS и посмотреть, есть ли у него PHP или запрос, с которым он имеет проблемы.

Ответ 3

Вероятно, вам не хватает информации о заголовке(), в которой он нуждается, - header ( "Status: 200" );... В то время как обратное перенаправление заголовка не работало без этой строки в chrome.

Ответ 4

Вы можете сделать PHP скрипт извлечением файла в фоновом режиме и откройте его в браузере. Как и в случае, PHP скрипт действует как прокси. Предполагая, что ваша загрузка не превышает ваш PHP-лимит webserver, это будет нормально.

Преимущества: -Нет перенаправления. -Вы не будете подвергать пользователя/пароль URL-адресу.

Если перенаправление на FTP-протокол pw является вашим решением, рассмотрите альтернативы. Существует множество способов защитить доступ к файлу через http. В наши дни производительность HTTP примерно такая же, как у FTP (давно это было неверно, а на быстрых сайтах был нужен FTP для загрузки).

Ответ 5

Вы получаете какую-либо ошибку или просто не работаете?

убедитесь, что выходной буфер установлен правильно в phpconfig

Ответ 6

У меня были подобные проблемы, и это оказалось связующим звеном! Если вы когда-либо позволяли сафари, omniweb или opera (или ftp-процесс в вашем случае) хранить имя пользователя и пароль в цепочке ключей для этого сайта, это будет отправлено на сайт, а не в URL-адрес. FireFox этого не делает, поэтому все работает так, как ожидалось.