跨域的解决之 定义cors过滤器

27 跨域的三种方案

遵守同源策略  浏览器的同源策略导致。

服务端在响应头添加 Access-Control-Allow-Origin: *

nginx解决  因为nginx是在服务端,服务端之间没有跨域,浏览器通过nginx去访问跨域地址。
nginx代理浏览器,此时nginx和浏览器是同源的,去服务端获取数据,因为是服务端的,也没有跨域,然后响应页面给浏览器。

28 定义cors过滤器

//从后往前推
//定义允许跨域的所有来源

@Configuration
public class GlobalCorsConfig{
    CorsConfiguration config=new ...;
    config.addAllowedOrigin("*");
    
    @Bean
    public CorsFilter corsFilter(){
        
        return new CorsFilter(source);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中解决问题可以使用以下方法: 1. 在后端Java代码中设置响应头 在后端Java代码中,可以通过设置响应头来允许请求。例如,可以设置Access-Control-Allow-Origin响应头来指定允许的请求来源,如下所示: ```java response.setHeader("Access-Control-Allow-Origin", "http://example.com"); ``` 这样就允许了来自http://example.com的请求。 2. 使用CORS过滤器 可以使用CORS过滤器来处理请求。CORS过滤器是一种过滤器,可以在HTTP请求到达后端应用程序之前处理请求,并添加必要的响应头以允许请求。 例如,下面是一个简单的CORS过滤器的实现: ```java public class CorsFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"); chain.doFilter(req, res); } // ... } ``` 在这个例子中,我们设置了Access-Control-Allow-Origin、Access-Control-Allow-Methods和Access-Control-Allow-Headers响应头,以允许任何来源的GET、POST、PUT、DELETE和OPTIONS请求,并允许Content-Type和Authorization头。 3. 使用Spring框架提供的CORS支持 如果你使用的是Spring框架,可以使用Spring提供的CORS支持来处理请求。可以使用@CrossOrigin注解来指定允许的请求来源,如下所示: ```java @RestController @RequestMapping("/example") @CrossOrigin(origins = "http://example.com") public class ExampleController { // ... } ``` 在这个例子中,我们使用@CrossOrigin注解来指定允许的请求来源为http://example.com。这样就允许了来自该站点的请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值