繁体   English   中英

php原点是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 Origin http://localhost:8000 is not allowed by 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>';
}


?>

我在此脚本中做错了什么?

如果您要来回发送GET数据,我会尝试进一步打开Access Control。 相同的原产地规则可能非常挑剔。

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

这是客户端的“问题”。 浏览器实现了安全性问题,以禁止从一个域到另一个域的请求。 有很多解决方法,特别是JSONP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM