springboot 添加允许跨域_SpringBoot设置支持跨域请求

跨域:现代浏览器出全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求,默认情况下是被禁止的,ip(域名)不同、或者端口不同、协议不同(比如http、https) 都会造成跨域问题。

一、前端解决方案

使用 JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建

script 标签,然后利用 script 的 SRC 不受同源策略约束来跨域获取数据。缺点是需

要后端配合输出特定的返回信息。

利用反应代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后

端,通过后端请求转发来避免跨域的访问。

后来 HTML5 支持了 CORS 协议。CORS 是一个 W3C 标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制。它通过服务器增加一个特殊的 Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持 CORS、并且判断 Origin 通过的话,就会允许 XMLHttpRequest 发起跨域请求。

二、java跨域的三种配置方式

方式一:配置过滤器(全局配置)

@Configuration

public class GlobalCorsConfig {

@Bean

public CorsFilter corsFilter() {

CorsConfiguration config = new CorsConfiguration();

config.addAllowedOrigin("*");

config.setAllowCredentials(true);

config.addAllowedMethod("*");

config.addAllowedHeader("*");

config.addExposedHeader("*");

UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();

configSource.registerCorsConfiguration("/**", config);

return new CorsFilter(configSource);

}

}

方式二:配置拦截器 (全局配置)

@Configuration

public class MyConfiguration extends WebMvcConfigurerAdapter {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**")

.allowCredentials(true)

.allowedHeaders("*")

.allowedOrigins("*")

.allowedMethods("*");

}

}

方式三: 单个请求的跨域通过 @CrossOrigin 注解来实现

@RequestMapping("/hello")

@CrossOrigin("http://localhost:8080")

public String hello( ){

return "Hello World";

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值