专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

SpringBoot服务端如何设置跨域资源共享(CORS)

浏览器同源策略

定义

  同源策略不属于HTTP协议,它是浏览器的一个规范限制。
  同源即两个网络资源的“协议”、“域名”、“端口”都是一样的。浏览器不允许A网站去访问B网站的资源,这就是浏览器的同源策略

作用

  浏览器的同源策略保证了用户保存在浏览器中的其他网站的信息(比如cookie),不会被恶意的网站or脚本来获取到,并做一些侵犯用户权益的事情。打个比方,加入没有同源策略就会出现以下情况:

  为了维护网站运行,小黑挂了一张收款码,觉得网站不错的可以适当资助一点,可是无奈伸手党太多,小黑的网站入不敷出。
  于是他非常生气的在网页中写了一段js代码,使用ajax向淘宝发起登陆请求,因为很多数人都访问过淘宝,所以电脑中存有淘宝的cookie,不需要输入账号密码直接就自动登录了,然后小黑在ajax回调函数中解析了淘宝返回的数据,得到了很多人的隐私信息,转手一卖,小黑的网站终于盈利了。
  如果跨域也可以发送AJAX请求的话,小黑就真的获取到了用户的隐私并成功获利了!!!
  为了防止小黑这种黑客侵犯用户的隐私,同源政策出现了。
  同源政策:不是同协议、同域名、同端口的网页无法相互访问。

-—–引用自 AJAX跨域访问被禁止的原因

Springboot项目设置跨域(CORS,cross origin resource share)

  设置跨域允许请求的方式有多种,对于Springboot项目,我们可以在服务端设置允许跨域请求。只需要在Spring Context中添加一个CorsFilter即可,代码如下:

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;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author xrw
 * 跨域请求配置
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    //从配置文件中读取允许访问的非本机地址
    @Value("${wedOrigin.name}")
    private  String wn;

    //允许跨域请求
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();

        //遍历数组,将允许访问的地址添加进去
        String [] result = wn.split(",");
        for (int i=0;i<result.length;i++){
            corsConfiguration.addAllowedOrigin(result[i]);
        }  

        //这一句表示允许任何地址访问服务器
        //corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

  也可以直接在Springboot的配置文件(application.yaml)中配置允许跨域访问当前应用的源(origin)

wedOrigin:
    name: [192.168.1.1,127.0.0.1]

参考

浏览器同源策略是什么?没有同源策略会怎么样?
AJAX跨域访问被禁止的原因
配置SpringBoot项目允许跨域访问

文章永久链接:https://tech.souyunku.com/26333

未经允许不得转载:搜云库技术团队 » SpringBoot服务端如何设置跨域资源共享(CORS)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们