gpt4 book ai didi

java - Angular 2 中使用服务 JAX-RS 的授权 header

转载 作者:行者123 更新时间:2023-11-30 02:09:10 24 4
gpt4 key购买 nike

我正在使用 Angular 5 作为前端,使用 java 和 jersey 作为后端来制作应用程序。当我尝试从前端 Angular 消费时,我遇到身份验证问题。这是客户端应用程序 Angular 代码:

const headers = {
'Content-Type': 'application/json',
'Authorization': this.auth.token
};

return this.http.get(this.url, { headers: headers, withCredentials: true })
.toPromise()
.then(this.extractData)
.catch(this.handleErrorPromise);

但是在寻找生成的请求时,我在服务器中找不到 header “授权”。在那里我只收到:

host:100.0.66.160:8092
connection:keep-alive
pragma:no-cache
cache-control:no-cache
access-control-request-method:GET
origin:http://localhost:4200
user-agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
access-control-request-headers:authorization,content-type
accept:*/*
accept-encoding:gzip, deflate
accept-language:pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7

然后我没有找到验证的“授权”,有人可以告诉我那里出了什么问题吗?

遵循服务器端的验证代码:

String authorizationHeader = requestContext.getHeaderString(HttpHeaders.AUTHORIZATION);
Autenticador autenticacao = new Autenticador();
String token;

extrairHeader(requestContext);

if (authorizationHeader != null && authorizationHeader.contains("Bearer ")) {
token = authorizationHeader.substring("Bearer ".length()).trim();
Key key = new KeyGenerator().generateKey();

return autenticacao.tokenValido(token, key);
} else {
return false;
}

最佳答案

这不是实际的请求,而是 CORS Preflight 。您可以通过请求中包含的以下 header 来判断:

  • 来源
  • 访问控制请求方法
  • 访问控制请求 header

这些 header 询问服务器是否允许该请求。服务器应该相应地响应响应 header ,告诉浏览器该请求被允许。如果预检正常,则发出真正的请求。

有关完整说明以及如何使用 JAX-RS 过滤器解决此问题,请查看 this post .

关于java - Angular 2 中使用服务 JAX-RS 的授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50572675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com