我使用CodeIgniter 3.0编写了一个REST API。我正在尝试使用服务中的Angular 2.0 Http模块调用此API。
无论何时我在请求中包含头参数,都会抛出此错误。
Request header field apikey is not allowed by Access-Control-Allow-Headers in preflight response.
以下是调用REST API的代码
login(email, pass): Observable<any> {
//url
let url = `${this.ApiAuthBase}/login`;
//header params
var headers = new Headers();
headers.append('apikey', 'fruits');
//body params
let userParams = new FormData();
userParams.append('email', email);
userParams.append('password', pass);
//fire api request
return this.http.post(url, userParams, {headers: headers}).map(res=>res.json())
}
REST API配置允许CORS,apikey
位于Allowed-Headers属性中。我必须从Angular 2传递一个标头参数。当从iOS或Node.JS连接API时,不会发生这个问题。有没有人遇到过这个问题?非常感谢所有帮助。
$config['check_cors'] = TRUE;
$config['allowed_cors_headers'] = [
'Origin',
'X-Requested-With',
'Content-Type',
'Accept',
'Access-Control-Request-Method',
'token',
'apikey'
];
$config['allowed_cors_methods'] = [
'GET',
'POST',
'OPTIONS',
'PUT',
'PATCH',
'DELETE'
];
$config['allow_any_cors_domain'] = FALSE;
$config['allowed_cors_origins'] = ['*'];
干杯!