У меня есть проблема CORS, что у меня нет идеи, откуда он происходит, я создаю услугу REST в Хаваее (Glassfish) и считаю Front Угловой app тратя упомянутую услугу, тестирую удостоверение из-за token с книжным магазином JJWT, до настоящего времени создал Token и остальные операции token и у меня не была проблема, угловой app делает просьбы в услугу и этот отвечает, НО, я не посылаю token в заголовке и это, потому что каждый раз, когда я верю в HttpHeaders в угловом и это добавляю к просьбе Http, что сервер возвращает мне ошибку CORS.
Мой Угловой код - следующий:
getProductoIndividual():Observable
{
console.log("getProductoIndividual", 'Authorization' + ':' + 'Bearer ' + localStorage["clave"]);
const header = new HttpHeaders({
'Authorization' : 'Bearer ' + localStorage["clave"]
});
return this.http.get("http://localhost:8080/PruebaCuatro/api/persona/3", { headers : header });
}
Если я удаляю второй параметр операции GET, тогда просьба функционирует совершенно, но если я это оставляю, как они это оценивают там, сервер бросает мне ошибку CORS.
Мой код JavaEE - следующий:
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_JSON})
public Response findModificado(@PathParam("id") Long id, @Context HttpHeaders headers) throws UnsupportedEncodingException
{
String jwt = "TTOOKKEENN";
JsonObject json;
List authorizationHeader = headers.getRequestHeader("Authorization");
String authString = null;
if(authorizationHeader == null || authorizationHeader.isEmpty())
{
authString = "NULO";
}
else
{
authString = authorizationHeader.get(0);
}
String email = null;
String sujeto = null;
Date iat = null;
Date exp = null;
try
{
Jws claims = Jwts.parser().setSigningKey("mi_clave").parseClaimsJws(jwt);
sujeto = claims.getBody().getSubject();
email = claims.getBody().get("email", String.class);
iat = claims.getBody().getIssuedAt();
exp = claims.getBody().getExpiration();
json = Json.createObjectBuilder().add("email", email)
.add("sujeto", sujeto)
.add("iat", iat.toString())
.add("exp", exp.toString())
.add("Authorization", authString)
.build();
} catch(SignatureException e)
{
json = Json.createObjectBuilder().add("LLAVE_ERRONEA", "La firma no correponde").build();
}
catch(ExpiredJwtException e)
{
json = Json.createObjectBuilder().add("LLAVE_ERRONEA", "La llave expiro").build();
}
return Response.status(Response.Status.CREATED).entity(json)
.header("Access-Control-Allow-Origin", "*").build();
}
РАССУЖДЕНИЯ: Очевидно цепь TTOOKKEENN не действительно в коде, в моем коде, если есть реальный token, я это осветляю, но это не составляет часть проблематики действительно. Я использую сервер GlassFish и не использую никакого framework JavaEE, АБСОЛЮТНО НИКАКОЙ FRAMEWORK, это просто код JavaEE, и который был произведен в большинстве своем Netbeans, и я это изменил, у него есть связь JPA, но это другая история. Также я не использую maven.
Также попробуйте использовать в угловом истребителя - перехватчика, но я получил тот же результат (ошибка CORS).
Предупреждение, которое я получаю от сервера, - следующее:
Блокированный запрос о перекрещенном источнике: Та же исходная политика не позволяет чтение удаленных ресурсов в http://localhost:8080/PruebaCuatro/api/persona/3. (Разум: Заголовок CORS 'Access-Control-Allow-Origin' не представил)
Где был бы должен идти Access-Control-Allow-Origin? вопрос кажется глупым, но - что уже не, что больше делать и как мудрецы говорят, что нет глупых вопросов а глупцов, которые не спрашивают, так как там также их оставила эта.
Я надеюсь, что они могут помогать мне. Во мне казаться проблемой находится в угловом header, я читаю их.
Конечно, когда выполнила та же API унифицированный указатель ресурса с тем же параметром Authorization seteado в Bearer TTOOKKEENN в POSTMAN или других программное обеспечение, чтобы тестировать API REST тогда, если оно функционирует как он должен быть, поэтому моя теория, которой проблема эта в Угловом.
Очевидно я должен решать проблему, чтобы мочь осуществлять удостоверение из-за Token в системе.
Книжные магазины, которые я использую в JavaEE:
В твоем классе configuraciГіn, или где ты используешь ее extensiГіn WebSecurityConfigurerAdapter , добавь их следующий mГ©todos.
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("http://localhost:4200");
}
};
}
@Override
public void configure(WebSecurity web) throws Exception {
super.configure(web);
}
@CrossOrigin
в твоем драйвере? В ней mayorГ - в проектов, мы начинаем тем, что позволяем соглашаться на ресурс с любого места, и например для mГ©todos GET
или POST
, мы это отмечаем следующей формы:
@CrossOrigin(origins = "*", methods= {RequestMethod.GET,RequestMethod.POST})
Это для разработки очень Гєtil. В производительных средах, ademГЎs ее securizaciГіn от доступа к ресурсам, ты должен помещать в этикетке origins=
, откуда ты хочешь позволить, что согласились, она direcciГіn.
ты Надеялся помочь.