2017-10-20 54 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