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中添加授權後,它運行良好 –

相關問題