在Safari中使用用户名和密码重定向到FTP URL

时间:2011-08-11 16:16:32

标签: php redirect safari ftp http-headers

我遇到了Safari无法解决的问题:

<?php
    header("Location: ftp://username:password@somedomain.org/somefile.zip");
?>

此代码段适用于所有浏览器(Fx,Chrome,IE7-9),但不适用于最新的Safari,后者告诉我,我没有权限查看该页面(也就是说,它重定向到使用正确的协议更正页面[somedomain.org],但不处理身份验证数据。)

有趣的是,当我将其直接复制到地址栏或当我在<a> - 标签上点击它时,它可以正常工作。这是一个Safari bug,还是我在这里遗漏了一些其他浏览器忽略的东西?如果它是一个Safari bug,是否有某种解决方法?

6 个答案:

答案 0 :(得分:1)

尝试:

header('HTTP/1.1 301 Moved Permanently');
header('Location: ftp://username:password@somedomain.org/somefile.zip');

如果不起作用,请尝试:

echo <<< EOF
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=ftp://username:password@somedomain.org/somefile.zip">
EOF;

或者:

header ('Location: ftp://username:password@somedomain.org/somefile.zip');   
header ('Content-Length: 0');

我得到的最后一个解决方案:http://www.ultrashock.com/forum/viewthread/90424/

答案 1 :(得分:0)

echo“window.location ='ftp:// username:password@somedomain.org/somefile.zip';”;

尝试JS重定向,看看它是PHP还是它有问题的请求。

答案 2 :(得分:0)

你可能缺少一些它需要的标题()信息 - 标题(“状态:200”); ...后退标题重定向不能在chrome中使用此行。

答案 3 :(得分:0)

您可以让PHP脚本在后台获取文件,并将其提供给浏览器。与此同时,PHP脚本充当代理。 假设您的下载量不超过您的网络服务器的PHP内存限制,那就没问题了。

优点: - 没有重定向。 - 您不会在URL中公开用户/传递。

如果您决定重定向到受保护的FTP,请考虑其他选择。有很多方法可以通过http保护对文件的访问。目前,HTTP的性能大约相当于FTP的性能(很久以前这不是真的,快速站点需要FTP才能下载)。

答案 4 :(得分:0)

你收到任何错误还是不工作?

确保在phpconfig中正确设置输出缓冲区

答案 5 :(得分:0)

我有类似的问题,结果证明是钥匙链!如果您曾经允许使用safari,omniweb或opera(或者您的情况下的ftp进程)将用户名和密码存储在该站点的钥匙串中,则会将其发送到站点而不是URL中的站点。 FireFox没有这样做,因此事情按预期工作。