Access-Control-Allow-Origin不允许使用


php Origin is not allowed by Access-Control-Allow-Origin

我的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: *)

在下面的脚本中没有运气。我有一个get.php文件在我的ftp访问服务器与以下代码:

<?
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>';
}

?>

我在这个脚本中做错了什么?

如果您要来回发送GET数据,我会尝试打开您的访问控制。同源规则可能非常挑剔。

Allow-Origin管理哪些服务器可以发出请求。

Max-Age实现过期。

Allow-Methods允许请求者发送GET/POST等。数据给你。

下面是一个例子:

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"];

这是客户端的"问题"。这是一个安全问题,是由浏览器实现的,禁止从一个域到另一个域的请求。有一些方法可以解决这个问题,特别是JSONP。