首页 > 解决方案 > Angular 和 Spring 启动:请求的资源上不存在“Access-Control-Allow-Origin”标头。如何通过角度和弹簧靴解决它

问题描述

毕竟这一切我得到了同样的错误。如何解决它。

错误:从源“http://localhost:4200”访问“http://localhost:8083/getuser”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“访问” -Control-Allow-Origin' 标头出现在请求的资源上##

拦截器.ts

 @Injectable()
export class AuthInterceptor implements HttpInterceptor{

 constructor(private loginService:LoginService){

 }

 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  let newReq=req;
  let token=this.loginService.getToken();
  console.log("Interceptor ",token) 

  if(token!=null){
    newReq=newReq.clone({setHeaders:{Authorization:`Bearer ${token}`}})
  }
  return next.handle(newReq)
}

}

app.module.ts

providers: [LoginService,AuthGuard, 
 [{provide:HTTP_INTERCEPTORS,useClass:AuthInterceptor,multi:true}]]

后端控制器

@CrossOrigin(origins ="*")
@RestController
public class Home {

@GetMapping("/welcome")  
public String welcome() {
    
    System.out.println("Home.welcome()");
    return "this is private page ";
}

@GetMapping("/getuser")
public String getUser() {
    
    return "My Name";
}
}

标签: javaangularspringspring-bootcross-origin-read-blocking

解决方案


如果这只是您正在使用的玩具项目而不是生产代码,您可以像这样禁用CorsFilterin SpringSecurity...

@EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.cors().disable()...
        }
    }

推荐阅读