Angular 5 未发送 header
Angular 5 not sending header
我搜索了大量帖子,但无法完全找到 header 未在获取请求中传递的问题:
return this.httpClient.get(this.parseUrl(controller), {
headers: new HttpHeaders({'Authorization': 'bearer ' + this.authService.getToken()}),
params: this.parseURLData(data)
})
.timeout(this.serverTimeout);
因此请求运行,添加了参数但缺少 headers?我在控制台中得到的是:
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-GB,en-US;q=0.9,en;q=0.8
Access-Control-Request-Headers:authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:h98t5z1
Origin:http://localhost:4200
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
我也为 header 尝试过这种表示法,但仍然是空的:
let headers = new HttpHeaders().set('header1', hvalue1);
headers = headers.append('header2', hvalue2);
Package.json
"dependencies": {
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
"@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "^5.2.0",
"bootstrap-css-only": "^4.0.0",
"core-js": "^2.4.1",
"moment": "^2.17.1",
"roboto-fontface": "^0.6.0",
"rxjs": "^5.5.6",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.19"
}
由于 header 存在,该请求在邮递员中有效。
有什么想法吗?
对我来说,这样工作
我希望能帮到你这个代码
public getUsers(): Observable<User[]> {
let headers = new Headers();
headers.append('x-access-token', this.auth.getCurrentUser().token);
return this.http.get(Api.getUrl(Api.URLS.getUsers), {
headers: headers
})
.map((response: Response) => {
let res = response.json();
if (res.StatusCode === 1) {
this.auth.logout();
} else {
return res.StatusDescription.map(user=> {
return new User(user);
});
}
});
}
我在 Android 和 Chrome 应用程序之间切换。 Android 需要我的机器在网络上的名称,Chrome 不适用于此但适用于本地主机。将我的 URL 更改为在 Chrome 中使用 localhost 就成功了。
我搜索了大量帖子,但无法完全找到 header 未在获取请求中传递的问题:
return this.httpClient.get(this.parseUrl(controller), {
headers: new HttpHeaders({'Authorization': 'bearer ' + this.authService.getToken()}),
params: this.parseURLData(data)
})
.timeout(this.serverTimeout);
因此请求运行,添加了参数但缺少 headers?我在控制台中得到的是:
Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-GB,en-US;q=0.9,en;q=0.8
Access-Control-Request-Headers:authorization
Access-Control-Request-Method:GET
Connection:keep-alive
Host:h98t5z1
Origin:http://localhost:4200
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
我也为 header 尝试过这种表示法,但仍然是空的:
let headers = new HttpHeaders().set('header1', hvalue1);
headers = headers.append('header2', hvalue2);
Package.json
"dependencies": {
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
"@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "^5.2.0",
"bootstrap-css-only": "^4.0.0",
"core-js": "^2.4.1",
"moment": "^2.17.1",
"roboto-fontface": "^0.6.0",
"rxjs": "^5.5.6",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.19"
}
由于 header 存在,该请求在邮递员中有效。
有什么想法吗?
对我来说,这样工作
我希望能帮到你这个代码
public getUsers(): Observable<User[]> {
let headers = new Headers();
headers.append('x-access-token', this.auth.getCurrentUser().token);
return this.http.get(Api.getUrl(Api.URLS.getUsers), {
headers: headers
})
.map((response: Response) => {
let res = response.json();
if (res.StatusCode === 1) {
this.auth.logout();
} else {
return res.StatusDescription.map(user=> {
return new User(user);
});
}
});
}
我在 Android 和 Chrome 应用程序之间切换。 Android 需要我的机器在网络上的名称,Chrome 不适用于此但适用于本地主机。将我的 URL 更改为在 Chrome 中使用 localhost 就成功了。