如何解决跨域的问题
程序员文章站
2022-06-02 11:26:06
...
现在我们假设从8001端口的页面。页面上有一个按钮,点击他直接发送ajax请求到8002端口的请求进行获取一个集合的数据,虽然8002端口已经返回数据到8001的页面的上,但是http协议默认是解析不到的。
针对不同端口的异步请求,称为跨域,我们利用cors可以解决,方法很简单,注意以下两点
1.分清主次放,我们这里的主方就是8001端口的页面(发送异步请求)。次放是请求的8002端口(接受请求)。
2.分清主次放,我们只要在次方创建一个配置类,添加如下代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class ConfigBena {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1) 允许的域,不要写*,否则cookie就无法使用了
config.addAllowedOrigin("http://localhost:8081");
#只需修改这一个地方即可,意思就是说我允许XXX端口的任何请求共享我当前的端口的资源
//2) 是否发送Cookie信息
config.setAllowCredentials(true);
//3) 允许的请求方式
config.addAllowedMethod("*");
// 4)允许的头信息
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}