CORS半工作在Angular App和Spring后端之间

时间:2017-11-02 20:27:06

标签: angular spring-boot cors spring-oauth2

关注this Spring tutorial我已将以下bean添加到配置逻辑中。请注意,我使用的是Spring Boot。

  

如果您使用的是Spring Boot,建议您按照以下方式声明WebMvcConfigurer bean:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**") 
                    // Just slightly modified
                    .allowedMethods("HEAD", "GET", "PUT", "POST", 
                                    "DELETE", "PATCH", "OPTIONS")
                    .allowedOrigins("*")
                    .allowedHeaders("*");
        }
    };
}

事情就是这样:我能够从客户端注册用户:

onSubmit() {
  this.http.post('http://localhost:8080/register', this.registerForm.value)
    .subscribe(
      data => this.onRegisterSuccess(),
      err => alert(err.error.message)
    );
}

但我无法访问OAuth2令牌的端点:

onSubmit() {
  const headers = new HttpHeaders()
    .set('Content-Type', 'application/x-www-form-urlencoded')
    .set('Authorization', 'Basic dGVzdGp3dGNsaWVudGlkOlhZN2ttem9OemwxMDA=');

  this.http.post('http://localhost:8080/oauth/token', this.loginForm.value, {headers: headers})
    .subscribe(
      data => this.onLoginSuccess(),
      err => alert(err.error.message)
    );
}

结果对话:

enter image description here

我不知道问题是什么。

1 个答案:

答案 0 :(得分:0)

授权标题很特殊。 您需要使用其他方法添加

.allowCredentials(false)