当将带有JWT的请求作为参数从URL(前端)发送到Web API(.net核心后端)时,得到400(错误请求)。我认为是因为令牌太长,并且浏览器有URL限制。
componentDidMount() {
const jwtToken = localStorage.getItem('id_token');
let config = {
method: 'POST'
}
return fetch('http://localhost:33458/api/GetUser/' + jwtToken, config)
.then(
(result) => {
console.log(result);
//this.setState({
// isLoaded: true,
// data: result
//});
},
(error) => {
console.log(error);
//this.setState({
// isLoaded: true,
// error
//});
}
)
}
Web API:
[HttpPost]
[Route("ListUsers/{token}")]
public List<UserDataModel> GetUser(string token)
{
//handle token checking and getting user data
}
如何避免url上限?
答案 0 :(得分:0)
我通过添加一个Authorization标头解决了这个问题:
headers: { "Authorization": "Bearer" + jwtToken}
然后使用以下命令在Web api中检索Authorization标头的值:
string header = HttpContext.Request.Headers["Authorization"];
string token = header.Remove(0, 6);