2017-04-24 103 views
0
var urlNextThink = 'https:XXXXXXX:1671/2/query?platform=windows&platform=mac_os&query=(select (id name) (from device))&format=json'; 


let headers = new Headers({ 'Accept': 'application/json' }); 

headers.append('Access-Control-Allow-Methods', 'GET'); 
headers.append('Access-Control-Allow-Origin', '*'); 
headers.append('Access-Control-Allow-Headers', 'Content-Type,Accept'); 
headers.append('Access-Control-Allow-Credentials', 'true'); 
headers.append('Authorization', 'Basic ' + btoa('XXX' + ':' + 'XXX')); 
//headers.append('Authorization', 'Basic ' + btoa('demo' + ':' + 'demo')); 

let options = new RequestOptions({ headers: headers, withCredentials: true }); 
return this.http 
    .get(urlNextThink, options) 
    .map(res => console.log(res)); 

我收到错误401(未授权)。之前当我使用Asp.net调用这个API时,我不得不在代码中添加下面的行,然后修复了同样的错误401(未授权)。我相信SSL仅限于验证API。在Angular中使用HTTPS API

ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate Certificate, X509Chain Chain, SslPolicyErrors sslPolicyErrors) 
     { return true; }; 

回答

0

你需要在服务器端配置像这样

HttpConfiguration config; 

如果URL是相同的请求URL,然后

config.EnableCors(); 

如果没有的话

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));