当前位置: 首页 > 知识库问答 >
问题:

无法修复CORS错误(angular+java spring)

子车睿
2023-03-14

我试图通过前端从后端请求数据,但我得到了错误:

Access to XMLHttpRequest at 'http://localhost:8081/api/transactions/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我可以用邮递员获取数据,但不能用我的前端。我正在使用angular和spring Boot。
我的application.java:

@EnableJpaRepositories
@EntityScan
@SpringBootApplication
public class KoalaTreeAccountingApplication {

    public static void main(String[] args) {
        SpringApplication.run(KoalaTreeAccountingApplication.class, args);
    }

}

我的安全配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest()
                .permitAll()
                .and().csrf().disable();
    }
}

我的服务以Angular方式进行http调用:

@Injectable({
    providedIn: 'root'
})
export class TransactionService {
    baseUrl = 'http://localhost:8081/api/';
    transactionUrl = this.baseUrl + 'transactions/';

    constructor(private http: HttpClient, private logger : Logger){ }

    getAllTransactions() : Observable<Transaction[]> {
        this.logger.log("Request all transactions");
        return this.http.get<Transaction[]>(this.transactionUrl);
    }

    getTransactionById(id : number) : Observable<Transaction> {
        this.logger.log("Request transaction " + id);
        return this.http.get<Transaction>(this.transactionUrl + id);
    }
}

编辑:我已尝试
https://Spring.io/guides/gs/rest-service-cors/
Spring Security CORS filter不工作
Spring-boot安全配置
https://stackoverflow.com/A/31748398/12025088

通过使用这个而不是securityconfig.java修正:

@Component
public class SimpleCORSFilter implements Filter {
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT");
        response.setHeader("Access-Control-Max-Age", "36000");
        response.setHeader("Access-Control-Allow-Headers", "origin, content-type, accept");
        chain.doFilter(req, res);
    }

    public void init(FilterConfig filterConfig) {
    }

    public void destroy() {
    }
}

共有1个答案

东方镜
2023-03-14

您需要添加一个bean来配置cors并在安全配置中启用cors

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(final CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("*")
                    .allowedHeaders("*")
                    .allowCredentials(true).maxAge(3600);
        }
    };
}


@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .anyRequest()
            .permitAll()
            .and().cors().and().csrf().disable();
}
 类似资料:
  • 我创建自定义插件,我有表wp_customers,我试图选择我表中的所有东西,但wordpress只是显示给我致命错误:未捕获错误:调用成员函数get_results()在C:\xampp\htdocs\wordpress\wordpress\wp-内容\plugins\rflreway\Public\show R中为空esult.php:4堆栈跟踪:#0{main}在第4行的C:\xampp\h

  • 我有ASP。NET核心API及其在Angular 5中的应用。我在启动中添加了代码。cs启用cors并允许所有来源,但它仍然给了我一个错误 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:4200因此,不允许访问。响应的HTTP状态代码为500。 下面是我的web api代码:

  • 我目前正在使用yahoo weather api获取天气数据。我正在犯错误。请帮忙。 获取在'https://weather-ydn-yql.media.yahoo.com/forecastrss?location=sunnyvale, ca 我试图做谷歌,但没有一个解决方案为我工作

  • 事实上,我在拉威尔是个新手,我正试图创建我的第一个项目。由于某些原因,我一直遇到这个错误(我甚至还没有开始编码) 我读到这与权限有关,但是chmod-R 775存储没有任何帮助。

  • 我是Java的新手,尤其是Java的面向对象编程,我一直收到这个让我发疯的错误。 以下是我的员工超类的一部分: 以及子类CommissionEmployee: 我得到的相同错误是: 这到底是什么意思,是什么原因导致的,我如何修复它?

  • 尝试在android上构建带有react-navigation的react-native v0.61.5应用程序时遇到此错误。iOS运行良好,不知道为什么我会得到这个index.android文件错误,因为我认为react-native将索引文件合并到singular < code > index . js 作为入口点。 这是全部错误: 加载依赖图,完成。错误:无法解析模块<代码>。``中的/in