我试图用角和Spring做简单的CRUD。我在spring boot应用程序中实现了JWT身份验证。之后,每当我进行插入操作时,它都工作得很好,但每当我试图编辑和删除它时,给出'origin'http://localhost:4200'就被CORS策略‘错误阻止了。为什么我会得到这个错误我在安全配置中添加了'CorsFilter'bean,但它仍然会给我同样的错误。在添加JWT Athentication之前,所有CRUD opration都工作得很好。
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.
cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues())
.and().csrf().disable()
.authorizeRequests()
.antMatchers("/**").permitAll()
.antMatchers("/").hasRole("ADMIN")
.antMatchers("/*").hasRole("USER")
.and()
.exceptionHandling()
.accessDeniedPage("/access-denied")
.and()
.addFilter(new JWTAuthenticationFilter(authenticationManager()))
.addFilter(new JWTAuthorizationFilter(authenticationManager(), customUserDetailService));
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
configuration.setAllowCredentials(true);
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("Authorization", "Cache-Control", "Content-Type", "xsrfheadername","xsrfcookiename"
,"X-Requested-With","XSRF-TOKEN","Accept", "x-xsrf-token","withcredentials","x-csrftoken"));
configuration.setExposedHeaders(Arrays.asList("custom-header1", "custom-header2"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
}
@RestController
public class StudentController {
@CrossOrigin(origins = "http://localhost:4200")
@PostMapping(value = "/info")
public List<Info> addproduct(@RequestBody Info info) {
signupDAO.add(info);
List<Info> addinfo = signupDAO.getAllInfo();
return addinfo;
}
@RequestMapping(value = "/infoDelete/{id}")
public void deleteStudent(@PathVariable int id) {
System.out.println("this is deleteid");
signupDAO.delete(id);
}
@PutMapping("/infos/{id}")
public String updateStudent(@RequestBody Info info, @PathVariable int id) {
info.setId(id);
signupDAO.update(info);
return "info";
}
}
LoginService.ts
webInfo(data: Student): Observable<any> {
const url = '/info';
return this.httpClient.post(this.serverUrl + url, data);
}
editPlan(data: Student, id: any): Observable<any> {
const url = `/infos/${id}`;
return this.httpClient.put(this.serverUrl + url, data);
}
deletePlan(id: any): Observable<any> {
const url = `/infoDelete/${id}`;
return this.httpClient.delete(this.serverUrl + url);
}
终于奏效了..
我从SecurityConfig.java中删除了这一行,所有的删除和编辑都工作了。
cors().configurationSource(request -> new CorsConfiguration().applyPermitDefaultValues())
有一个应用程序在角7也有一个. net web api解决方案,当我调用一个动作CORS问题发生,错误如下 CORS策略阻止从http://localhost:57467/UserDetails/GetUserDetailshttp://localhost:4200访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。 我试图使用Web ap
交叉起源没有发生,被CORS策略阻止。 我使用的是Windows系统。 在文件中: 在文件中: 我在浏览器控制台中遇到此错误: CORS策略阻止了从http://localhost:1111/api/v1/employees/createhttp://localhost:4200对XMLHttpRequest的访问:对预飞行请求的响应没有通过权限改造检查:请求的资源上没有访问控制允许起源标头。<-
请求标头如下所示: 临时头显示为access-control-request-headers:content-type access-control-request-method:POST origin:http://localhost:4200 referer:http://localhost:4200/login user-agent:mozilla/5.0(Macintosh;Intel M
当我使用HTML2Canvas评估图像时,我得到了这个错误。 CORS策略阻止从来源“http://localhost:8080”访问位于“http://testdomain.com/storage/images/products/user_front.png”的映像:请求的资源上没有“Access-Control-Allow-Origin”标头。 下面是我的cors配置。 有人能帮我吗?
我有一个。NET核心应用程序,它有一个REST API被一个角客户机使用,但遇到了CORS问题。 但仍在客户端(运行在本地端口4200上)中获取错误: CORS策略阻止从来源“HTTP://localhost:4200”访问位于“HTTP://localhost/myapi/api/table”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。