cors-auth-springboot

qqrboqgw  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(340)

我正在使用springboot和angular。尝试使用jwt登录,当使用postman发送http时,请求正常,但当尝试使用angular发送相同的http时,我遇到了下一个错误:
访问位于“”的xmlhttprequesthttp://localhost:8080/login“起源”http://localhost:4200'已被cors策略阻止:对飞行前请求的响应未通过访问控制检查:它没有http ok状态。

zone evergreen.js:2845 posthttp://localhost:8080/login net::err_失败
当我发送登录以外的请求时,它们工作正常,我知道需要cors,因此代码是下一个:

@EnableGlobalMethodSecurity(securedEnabled = true)
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().anyRequest().authenticated().and().csrf().disable().sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().cors();
}

@Bean
CorsConfigurationSource corsConfigurationSource() {
    org.springframework.web.cors.CorsConfiguration configuration = new org.springframework.web.cors.CorsConfiguration();
    configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
    configuration.setAllowedMethods(Arrays.asList("*"));
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    source.registerCorsConfiguration("/**", configuration);
    return source;
}

但错误是一样的。

cedebl8k

cedebl8k1#

您可以在angular应用程序中使用proxy.conf.json。
这就是一个例子 proxy.conf.json ```
{
"/api/*": {
"target": "http://localhost:8080",
"secure": false,
"logLevel": "debug",
"pathRewrite": {
"^/api" : ""
}
}
}

然后你就可以使用你的手机了
http://localhost:4200/api/path-be `http://localhost:4200` 这是你的angular应用程序。 `/api` 如果你要求 `/api/*` 因此,Angular 代理配置将重定向到您在中定义的位置 `proxy.conf.json` 记得加上 `proxy.conf.json` 给你 `angular.json` ```
"serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "angular-hands-on:build",
            "proxyConfig": "proxy.conf.json"
          },

重新启动你的angular应用程序

相关问题