1.跨域
当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域 HTTP 请求(Cross-site HTTP request)。
2.源
源[origin]就是协议、域名和端口号。例如:http://www.baidu.com:80这个URL。
3.同源
若地址里面的协议、域名和端口号均相同则属于同源。
4.跨域实质上
就是受前面所讲的浏览器同源策略的影响,不是同源的脚本不能操作其他源下面的对象。想要操作另一个源下的对象就需要跨域。在同源策略的限制下,非同源的网站之间不能发送 AJAX 请求。
5 不受同源策略影响
1.页面中的链接,重定向以及表单提交是不会受到同源策略限制的;2.跨域资源的引入是可以的。但是 JS 不能读写加载的内容。如嵌入到页面中的“
,,
6.如何跨域?
1.降域 2.jsonp 跨域 2.cors 跨域
7.springboot 配置 cors 跨域
**对某一接口配置,可以在方法上添加 @CrossOrigin 注解 **
@CrossOrigin(origins = {"http://localhost:9000", "null"})
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String greetings() {
return "{\"project\":\"just a test\"}";
对一系列接口配置,在类上加注解,对此类的所有接口有效
@CrossOrigin(origins = {"http://localhost:9000", "null"})
@RestController
@SpringBootApplication
public class SpringBootCorsTestApplication {
如果想添加全局配置,则需要添加一个配置类
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.maxAge(3600)
.allowCredentials(true);
}
}
还可以通过添加 Filter 的方式,配置 CORS 规则,并手动指定对哪些接口有效
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); config.addAllowedOrigin("http://localhost:9000");
config.addAllowedOrigin("null");
config.addAllowedHeader("_");
config.addAllowedMethod("_");
source.registerCorsConfiguration("/\*\*", config); // CORS 配置对所有接口都有效
FilterRegistrationBean bean = newFilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
作者:
Vincent.Y
来源:
https://blog.csdn.net/weixin_43075298/article/details/88642557
热门内容:
记一次内存飙升的Windbg
- 分布式架构数据存储设计与实践
- 服务容错场景分析实现方案