我遇到了Safari无法解决的问题:
<?php
header("Location: ftp://username:password@somedomain.org/somefile.zip");
?>
此代码段适用于所有浏览器(Fx,Chrome,IE7-9),但不适用于最新的Safari,后者告诉我,我没有权限查看该页面(也就是说,它重定向到使用正确的协议更正页面[somedomain.org],但不处理身份验证数据。)
有趣的是,当我将其直接复制到地址栏或当我在<a>
- 标签上点击它时,它可以正常工作。这是一个Safari bug,还是我在这里遗漏了一些其他浏览器忽略的东西?如果它是一个Safari bug,是否有某种解决方法?
答案 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没有这样做,因此事情按预期工作。