问题描述
我已安装nvm 1.1.7
和Node.js
版本8.11.1。
现在我已经安装了angular@cli
版本6.1.3,并使用ng new
创建了一个Angular项目。
我正在尝试将Basic Authentication
作为服务器来进行SpringBoot
。我遵循了大量指南,但是无法在HttpHeader
内设置身份验证参数。
如果我写了:
var headers_object = new HttpHeaders();
headers_object.set('Content-Type','application/json');
headers_object.set('Authorization','Basic ' + btoa('guest:guest1234'));
然后:
console.log(headers_object.get('Content-Type'));
它打印null
。如果我写了:
const httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
};
console.log(httpOptions.headers.get('Content-Type'));
它打印application/json
。如果我检查HttpHeaders
代码,则可以清楚地看到set
方法。
在我的package.json
中,看到:
"@angular/animations": "^6.1.0","@angular/common": "^6.1.0","@angular/compiler": "^6.1.0","@angular/core": "^6.1.0","@angular/forms": "^6.1.0","@angular/http": "^6.1.0","@angular/platform-browser": "^6.1.0","@angular/platform-browser-dynamic": "^6.1.0","@angular/router": "^6.1.0","core-js": "^2.5.4","rxjs": "6.0.0","zone.js": "~0.8.26"
怎么了?
--------------------------更新-------------------- ---
我设法发送(我认为..)标题参数如下:
let httpHeaders = new HttpHeaders()
.set('Authorization','Basic ' + btoa('guest:guest1234'))
.set('Content-Type','application/json');
console.log(httpHeaders.get('Content-Type')); // print correct
const httpOptions = {
headers: httpHeaders
};
console.log(httpOptions.headers.get('Content-Type')); // print correct
return this.http.get('http://localhost:8080/hello',httpOptions); // return 401!!
我真是为这个愚蠢的事情而发疯... PS:Cors被Chrome扩展程序禁用了。.并且有了Postman,我可以到达服务器了。
解决方法
解决了..问题是服务器端..我忘记了:
.antMatchers(HttpMethod.OPTIONS,"/**").permitAll()
在Spring Security Configuration
类内部。无论如何,即使没有上述代码,我仍然可以通过Postman访问服务器。
var headers_object = new HttpHeaders();
headers_object.set('Content-Type','application/json');
headers_object.set('Authorization','Basic ' + btoa('guest:guest1234'));
console.log(headers_object.get('Content-Type')); // printing null
我绝对不是Angular的新手,我将在Typescript 2.9
文档中进行搜索。
非常感谢任何帮助(或文档提示)!