0

我正在为我的服务器应用程序使用codeigniter REST API。和客户端Angular2一样,在我的REST API中,我给出了基本的身份验证。我已喜欢Angular 2请求标头字段预操作响应中的Access-Control-Allow-Headers不允许授权

$config['rest_auth'] = 'basic'; 

而且

$config['rest_valid_logins'] = ['uname' => 'pwd']; 

,也为CORS检查我用下面的代码,

$config['check_cors'] = TRUE; 
$config['allowed_cors_headers'] = [ 
    'Origin', 
    'X-Requested-With', 
    'Content-Type', 
    'Accept', 
    'Access-Control-Request-Method' 
]; 
$config['allowed_cors_methods'] = [ 
    'GET', 
    'POST', 
    'OPTIONS', 
    'PUT', 
    'PATCH', 
    'DELETE' 
]; 
$config['allow_any_cors_domain'] = TRUE; 

而且我也试图在我的休息控制器明确地尝试,

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); 
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description'); 

我在下面使用代码在角,

当我与邮递员检查它运作良好,没有任何问题。当检查与角度误差就这样产生,

XMLHttpRequest cannot load http://localhost:97/sencogold/index.php/Adminaccount_api/login_adminuser. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response. 

如果我假休息权威性和删除授权头是没有工作以及检查API的用户名和密码

$config['rest_auth'] = FALSE; 

,并在角

this.headers = new Headers(); 
    //this.headers.append('Authorization', 'Basic ' + btoa('lmxretail:[email protected]')); 
    this.headers.append('Content-Type', 'application/x-www-form-urlencoded'); 

请帮助任何人申请认证我的api。

+0

检查服务器配置。头允许或不允许。 –

+0

将“Access-Control-Allow-origin”插件添加到chrome中以解决此问题,但它不是永久性解决方案。 –

+0

[如何创建跨域请求(Angular 2)?](https://stackoverflow.com/questions/34790051/how-to-create-cross-domain-request-angular-2) – echonax

回答

1

为了使您的预检请求成功,服务器控制器必须接受“授权”标头为有效。你可以通过与其他允许的头值一起加入“授权”键:

Access-Control-Allow-Headers: Authorization, Content-Type, Content-Range, Content-Disposition, Content-Description

+0

可能有重复也试过这样,还是一样的问题。 this.headers.append('Access-Control-Allow-Headers','Authorization,Content-Type,Content-Range,Content-Disposition,Content-Description'); ('Access-Control-Allow-Methods','GET,POST,OPTIONS'); this.headers.append('Access-Control-Allow-Origin','*'); –

+0

你在正确的地方做这个吗?我的意思是你应该在服务器配置上这样做。您的代码看起来像您正在根据客户端请求进行操作。 – YuVi

+0

我在我的其余控制器头文件中添加了“Access-Control-Allow-Headers:授权,内容类型,内容范围,内容处理,内容描述”; header('Content-type:application/json'); header(“Access-Control-Allow-Origin:*”); header(“Access-Control-Allow-Methods:GET”); header(“Access-Control-Allow-Methods:GET,OPTIONS”); –

3

添加Authorization到CORS检查:

$config['allowed_cors_headers'] = [ 
    'Authorization', 
    'Origin', 
    'X-Requested-With', 
    'Content-Type', 
    'Accept', 
    'Access-Control-Request-Method' 
]; 
+0

非常感谢,它帮助了我。在我在allowed_cors_headers中添加授权后,它运行良好 –

相关问题