使用Spring Boot的跨源CORS设置
2018-03-19 23:37
435 查看
1. 问题
在学习Angular时,使用以下代码发起POST请求,this.http.post("http://localhost:8899/login", body, {headers: headers})
会出现以下错误提示。
已拦截跨源请求:同源策略禁止读取位于 http://localhost:8899/login 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
原因是使用得RESTful微服务没有配置跨源CORS设置。
2. 解决
使用Spring Boot的@Configuration和@Bean追加一个基于Filter的CORS配置。使用到的类有:CorsConfiguration和UrlBasedCorsConfigurationSource。代码如下:
[java] view
plain copy
@Configuration
public class SecurityCorsConfiguration {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("http://localhost:4200");
config.addAllowedHeader(CorsConfiguration.ALL);
config.addAllowedMethod(CorsConfiguration.ALL);
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
}
以上表示许可来自http://localhost:4200 的所有请求header、请求方法、请求路径。
有无跨源CORS设置时的OPTIONS请求的header,请参照:
https://my.oschina.net/superpeepi/blog/906612
https://my.oschina.net/superpeepi/blog/906620
相关文章推荐
- 使用Spring Boot的跨源CORS设置
- 使用Spring Boot的跨源CORS设置
- 使用Spring Boot的跨源CORS设置,前后端分离的时候
- 使用Spring Boot的跨源CORS设置
- spring boot环境下使用quartz设置定时任务
- springboot 1.5.x 使用tomcat8设置cookie的domain以dot开头报错
- 使用druid-spring-boot-starter时设置监控界面登录信息的方法
- Spring Boot全局支持CORS(跨源请求)的配置方法
- Spring Boot全局支持CORS(跨源请求)的配置方法
- spring-boot前后端分离跨域问题的解决,主要是使用cors
- Spring Boot使用CORS解决跨域问题
- 记录在Spring-Boot中使用Fegin调用RESTfull的PATCH方法设置
- u-boot环境变量的设置与使用
- 初识spring boot maven管理--使用spring-boot-starter-parent
- 使用 Spring Boot 快速构建 Spring 框架应用
- 使用Spring Boot快速构建应用
- 使用springBoot进行快速开发
- 使用Spring Boot快速构建应用
- 使用Spring Boot快速构建应用
- 使用腾讯企业邮箱调用SpringMail或者JavaMail发送邮件的发送服务器设置