我的ftp / php跨域请求有问题。使用我的浏览器,我可以通过传递这样的参数来访问内容:http://xxx.org/models/get.php?file=default_app/y_car_new/stock.jpg。但是使用JavaScript,相同的链接会给我起源http://localhost:8000 is not allowed by Access-Control-Allow-Origin
我已经尝试了
标题(“Access-Control-Allow-Origin:*”)
以下脚本没有运气。我的ftp访问服务器中有一个get.php文件,代码如下:
<?
if(isset($_GET["file"])) {
$filepath = "/.../models/".$_GET["file"];
//echo "path: " , $filepath;
$filetype = pathinfo($filepath);
//echo $filetype['extension'], "\n";
header('Access-Control-Allow-Origin: *');
header('Content-Type: '.$filetype['extension']);
// //header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($filepath));
ob_clean();
readfile($filepath);
}//if
else {
echo '<img src="http://stupidbadmemes.files.wordpress.com/2013/02/no-you-may-not.jpg"></img>';
}
?>
我在这个剧本中做错了什么?
答案 0 :(得分:2)
如果您要来回发送GET数据,我会尝试更多地打开您的Access控件。同源原则规则可能非常挑剔。
Allow-Origin管理哪些服务器可以发出请求。
Max-Age实现过期。
Allow-Methods允许请求者发送GET / POST / etc。数据给你。
以下是一个例子:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
附注
Allow-Origin应该在生产时设置为您的特定请求域,*会在那里增加一些风险。
请仔细检查您的输入,访问这样的文件是一件很危险的事情。你基本上是让人们阅读工作目录中的任何文件。
$filepath = "/.../models/".$_GET["file"];
答案 1 :(得分:0)
这是客户端“问题”。这是一个安全问题,由浏览器实现,禁止从一个域到另一个域的请求。有很多方法,尤其是JSONP。