Перенаправление на 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 этого не делает, поэтому все работает так, как ожидалось.