java后端之【跨域】

     因为浏览器的同源策略,导致不同源的地址无法进行相互访问,出现跨域问题。比如:在百度页面,使用fetch请求,百度和淘宝的链接,会出现淘宝链接出现cors错误。

 

  • 概念剖析:

  1. 同源策略:是一种约定,它是浏览器最核心也最基本的安全功能。一个url包含以下几个部分:协议、域名、端口,只有这几个完全相同则为同源,否则为非同源。(http默认80端口,https一般默认443端口,url中可以忽略不写)
  2. CORS:跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。简而言之,就是解决跨域问题,使得域名A的请求能够请求域名B的资源。(前端web访问你本地后端接口)

  • 解决方案(java后端)

  1.   使用注解 `@CrossOrigin`,标注在controller类的方法上或者controller类上。此方法针对多接口不适用,每个接口都得添加,代码繁琐。

2.使用crosFIlter过滤器

package com.zbkj.admin.config;


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 CorsConfig{
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); //允许任何域名
        corsConfiguration.addAllowedHeader("*"); //允许任何头
        corsConfiguration.addAllowedMethod("*"); //允许任何方法
        return corsConfiguration;
    }


    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); //注册
        return new CorsFilter(source);
    }
}

3.实现WebMvcConfigurer 

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")  //设置允许跨域访问的路径
                .allowedOrigins("*")  //设置允许跨域访问的源
                .allowedMethods("*")  //允许跨域请求的方法
                .maxAge(168000)  //预检间隔时间
                .allowedHeaders("*")  //允许头部设置
                .allowCredentials(true);  //是否发送 cookie

}
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值