我用laravel寫入後端。並嘗試從IONIC使用@angular/http
調用api。API服務器始終響應「否」Access-Control-Allow-Origin'「
在後臺服務器中,我已經在中間件和響應中添加了Access-Control-Allow-Origin
。
中間件。
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE')
->header('Access-Control-Allow-Credentials', true)
->header('Access-Control-Allow-Headers', 'Content-Type')
->header('Vary', 'Origin');
迴應。
return response($data, 200)
->withHeaders([
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE',
'Access-Control-Allow-Credentials' => true,
'Access-Control-Allow-Headers' => 'Content-Type',
'Vary' => 'Origin',
]);
離子
url: any = 'http://myurl.local/api/';
headers = new Headers(
{
'Accept' : 'application/json',
'Content-Type' : 'application/json',
'Access-Control-Request-Methods' : 'POST'
});
options = new RequestOptions({ headers: this.headers });
login(username, password) {
let data = JSON.stringify({
username : username,
password : password
});
let fullUrl = this.url+'login';
return new Promise((resolve, reject) => {
this.http.post(fullUrl, data, this.options)
.toPromise()
.then((response) =>
{
console.log('API Response : ', response);
resolve(response.json());
})
.catch((error) =>
{
console.error('API Error : ', error.toString());
reject(error.json());
});
});
}
當我打電話API與'Content-Type' : 'application/json'
它總是響應誤差。
XMLHttpRequest無法加載http://myurl.local/api/login。對 預檢請求的響應未通過訪問控制檢查:否 「所請求的 資源上存在」Access-Control-Allow-Origin「標頭。原因'http://localhost:8100'因此不允許 訪問。
但是,如果我將'Content-Type'
更改爲'application/x-www-form-urlencoded'
。我沒有得到任何錯誤。
但是,當我嘗試看輸入$request->all()
。我得到的數據是'{"username":"XXXXXXXXXX","password":"XXXXXXXXXX"}' => NULL
。
與郵遞員很好。我真的嘗試了很多方法來解決這個問題,但是我做不到。
有什麼不對?
在中間件或控制器? – ThunderBirdsX3
在你的中間件代碼 – sideshowbarker
可能是我做錯了什麼?它有同樣的問題。 ($ request-> getMethod()==「OPTIONS」){ $ headers = [ 'Access-Control-Allow-Methods'=>'公共函數句柄($ request,Closure $ next) POST,GET', 'Access-Control-Allow-Headers'=>'Content-Type' ]; 返回響應:: make('OK',200,$ headers); } return $ next($ request); }' – ThunderBirdsX3