2017-10-20 53 views
1

我正在使用Ionic 3和自己的REST Api,使用Slim Framework完全访问服务器。CORS在POST图像时出错

每个API调用(GET,POST,PUT和DELETE)尽管这样的:

let formData = new FormData(); 
formData.append("file",image); 
return this.httpClient.post("https://myurl.com/api/v1/image,formData) 

的IMAGEURL是我的服务器API和形象是我从科尔多瓦相机插件获取路径。

这是我的服务器错误:

[Error] Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin. 
[Error] Failed to load resource: Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin. 
[Error] XMLHttpRequest cannot load https://hobbyrea.com/api/v1/user/image due to access control checks. 

这是我的服务器端头的样子:

$app->options('/{routes:.+}', function ($request, $response, $args) { 
    return $response; 
}); 
$app->add(function ($req, $res, $next) { 
    $response = $next($req, $res); 
    return $response 
     ->withHeader('Access-Control-Allow-Origin', '*') 
     ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization') 
     ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); 
}); 

任何人都可以给我一个建议,为什么我得到的错误与此API调用?

编辑:

我从iPhone访问API。编辑2: 我使用cordova文件传输插件。请记住在PHP设置中升级upload_max_filesize。它会为您节省很多头痛:D

+0

我认为与您的离子。你有配置代理吗?像这样.. https://stackoverflow.com/a/38359981/2249037 – Sh4m

+0

这个请求来自哪里:http:// localhost:8080 – Henry

+0

尝试Mozilla Firefox它可能不会引发此问题 – Edison

回答

0

将客户端的Origin添加到您的服务器允许的源头中。

Access-Control-Allow-Origin: http://localhost:8080 
+0

我已经做到了。看看我的帖子:) – TdoubleG

+0

不,你没有添加它,你添加了* – Scriptonomy

+0

是的,但我已经试过了。 – TdoubleG