企业如何通过vue小程序开发满足高效运营与合规性需求
560
2023-01-23
SpringBoot跨域问题的解决方法实例
谈到跨域问题,首先我们要认识一下浏览器的同源策略
百度百科对同源策略的解释
当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,
即检查是否同源,只有和百度同源的脚本才会被执行。 [1]
如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。
同源策略是浏览器的行为,是为了保护本地数据不被javascript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。
其实就是,客户端浏览器请求url去获取资源,也就是请求服务器的ip地址加上端口号(http://主机名:端口号),如果服务器所在的Ip地址(http://主机名:端口号)并不一致,这就属于不同源,就产生一个跨域的问题,浏览器会禁止服务端返回数据
解决方法有两种
前端制造不符合规则的请求规则
后端进行跨域支持(告诉前端别管这些规则了,按我的来)
跨域问题
跨域问题是指下面一些地方不同(至少一处)
请求协议不同
ip地址不同
端口号不同
请求方式不同
SpringBoot解决跨域问题
/**
* @Author: Ember
* @Date: 2021/4/26 22:16
* @Description:
*/
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings (CorsRegistry registry) {
String[] allowOrigins ={"http://localhost:8080/","https://quyo.fun/"};
//允许所有形式的跨域请求
registry.addMapping ("/**")
.allowedOriginPatterns ("*")
.allowCredentials (true)
.allowedMethods ("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.maxAge (3600);
}
private CorsConfiguration buildConfig () {
CorsConfiguration corsConfiguration = new CorsConfiguration ();
List
list.add ("*");
corsConfiguration.setAllowedOrigins (list);
corsConfiguration.addAllowedOrigin ("*");
corsConfiguration.addAllowedHeader ("*");
corsConfiguration.addAllowedMethod ("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter () {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource ();
source.registerCorsConfiguration ("/**", buildConfig ());
return new CorsFilter (source);
}
@Bean
public HttpMessageConverter
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(List
converters.add(responseBodyConverter());
}
}
测试
下面是一个前端AJAX小测试
$(function(){
$("#cors").click(
function(){
$.ajax({
headers:{"token":"","Content-Type":"application/json;charset=UTF-8","Access-Control-Allow-Origin":"*"},
url:"http://47.119.112.252/book/index/show/allBlogs",
success:function(data){
console.log("start")
console.log(data)
alert(data);
}
})
});
});
跨域问题解决。
总结
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~