CORS在POST图像时出错
问题描述:
我正在使用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
答
将客户端的Origin添加到您的服务器允许的源头中。
Access-Control-Allow-Origin: http://localhost:8080
我认为与您的离子。你有配置代理吗?像这样.. https://*.com/a/38359981/2249037 – Sh4m
这个请求来自哪里:http:// localhost:8080 – Henry
尝试Mozilla Firefox它可能不会引发此问题 – Edison