在将我的项目更新到angular 2 final之后,我在使用IdentityServer3和angular2-jwt时遇到了一个WebApi2授权的问题。在一切正常之前,在angular2-jwt配置中,headername是空的,token-getter-method只返回token。
更新空的headername后,导致javascript错误:
EXCEPTION: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': '' is not a valid HTTP header field name.发布于 2017-02-21 17:11:46
因此,首先我必须提供一个头名称,在我的root-module angular2-jwt配置中如下所示:
provideAuth({
headerName: 'BearerToken',
headerPrefix: '',
tokenName: '',
tokenGetter: () => {
return JSON.parse(localStorage.getItem('bearerToken'));
},
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
noTokenScheme: true
})还是不能工作。经过一些研究,我发现头名称应该是“授权”,而tokenName应该是“持有者”。好的,让我们这样试一下:
provideAuth({
headerName: 'Authorization',
headerPrefix: '',
tokenName: 'Bearer',
tokenGetter: () => {
return JSON.parse(localStorage.getItem('bearerToken'));
},
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
noTokenScheme: true
})尽管如此,我的带有Authorize-Tag的ControllerMethod仍然没有到达。好的,最后一次尝试,当我手动添加‘持有者’时,可能会起作用:
provideAuth({
headerName: 'Authorization',
headerPrefix: '',
tokenName: 'Bearer',
tokenGetter: () => {
var token: string = JSON.parse(localStorage.getItem('bearerToken'));
return 'Bearer ' + token;
},
globalHeaders: [{'Content-Type': 'application/json'}],
noJwtError: true,
noTokenScheme: true
})还有..。轰炸机惊喜。它起作用了;)再多玩一点,我发现tokenName可以是空的,也可以包含其他任何东西。
https://stackoverflow.com/questions/42363037
复制相似问题