请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许Origin'http:// localhost:4200'访问

问题描述 投票:2回答:1

我从Angular http服务调用了Spring REST Web服务。我叫get方法。我得到以下异常。

无法加载http://127.0.0.1:8080/SpringRestExample/rest/emp/dummy:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,'http://localhost:4200'原产地不允许进入。

我在客户端和服务器端添加了标头,如下所示,但仍然存在错误。

客户端:

let headers= new Headers();
 headers.append('Access-Control-Allow-Headers', 'Content-Type,application/json');
 headers.append('Access-Control-Allow-Methods', 'GET');
 headers.append('Access-Control-Allow-Origin', 'http://localhost:4200');
 let options = new RequestOptions({ headers: headers });
this.http.get("http://127.0.0.1:8080/SpringRestExample/rest/emp/dummy",options).subscribe(data => {
  console.log(data);

服务器端

httpResponse.setHeader("Access-Control-Allow-Origin", "http://localhost:4200");
        httpResponse.setHeader("Access-Control-Allow-Methods", "GET");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,'application/json'");

谁知道解决方案?

javascript spring angular rest
1个回答
0
投票

删除客户端标头并添加

httpResponse.setHeader("Access-Control-Allow-Origin", "*");

到您的服务器端代码。

我有一个CORS的弹簧启动配置,工作正常:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "OPTIONS", "GET", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true).maxAge(3600);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.