分享后端解决跨域问题的三种方案

这篇具有很好参考价值的文章主要介绍了分享后端解决跨域问题的三种方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.跨域的介绍

跨源资源共享(CORS——Cross-Origin Resource Sharing,跨源资源共享,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。

2.跨域产生原因

跨域问题所产生的原因是浏览器的“同源策略”所导致的。什么是同源策略呢,就是浏览器规定了,我当前页面和请求页面的 1网络协议、2主机域名、3端口,这三部分必须保证一模一样才行。如下图:

分享后端解决跨域问题的三种方案

这也主要是浏览器为了保证用户上网的基本安全需求而设置的。

1.为了防止恶意网页可以获取其他网站的本地数据。

2.为了防止恶意网站iframe其他网站的时候,获取数据。

3.为了防止恶意网站在自已网站有访问其他网站的权利,以免通过cookie免登,拿到数据。

3.跨域的解决方案

跨域的解决方案有很多种,前后端都有。这里主要介绍下我所知道的三种方案,并配以代码展示。

1.在后端被访问代码的方法上加注解@CrossOrign。这个注解是spring-web中的注解,我们只需在方法上面加注之后,就会解决CORS问题。例如:

/**
     * 获取用户信息
     * 
     * @return 用户信息
     */
    @GetMapping("getInfo")
    @CrossOrigin
    public AjaxResult getInfo()
    {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        // 角色集合
        Set<String> roles = permissionService.getRolePermission(user);
        // 权限集合
        Set<String> permissions = permissionService.getMenuPermission(user);
        AjaxResult ajax = AjaxResult.success();
        ajax.put("user", user);
        ajax.put("roles", roles);
        ajax.put("permissions", permissions);
        return ajax;
    }

但是,后端有很多被访问的方法,我们不能在每个方法上面都加上这个注解,代码冗余。所以就有了第二种方法,我们可以添加一个过滤器,来解决CORS问题,代码如下:


@Configuration
public class CORSFilter {
    @Bean
    public CorsFilter corsFilter(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedMethod("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsFilter(source);
    }
}

还有一种解决方法,我们可以通过实现接口并重写方法来解决跨域问题,代码如下:

@Configuration
public class CORSConfiguration implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*")
                .allowedMethods("GET","POST","PUT","HEAD")
                .allowCredentials(true)
                .allowedHeaders("*")
                .maxAge(3600);
    }
}

通过这三种方式,我们就可以解决CORS跨域问题。文章来源地址https://www.toymoban.com/news/detail-434468.html

到了这里,关于分享后端解决跨域问题的三种方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web后端解决跨域问题

    目录 什么是跨域问题 为什么限制访问 解决 域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的,是浏览器对js施加的安全限制。跨域的严格一点的定义是:只要

    2024年02月13日
    浏览(38)
  • 外企开展中国在线业务的三种网络加速方案:含免ICP备案CDN解决方案

    中国作为全球除美国外最大的消费市场,是几乎每个国际化企业都想要深入挖掘的市场,但外国企业在中国开展在线业务需要面临一个比较特殊的挑战:互联网防火墙(GFW)。为此所有想要在中国市场有所作为的外企都需要首先解决这个问题。 本文旨在为想要进入中国市场的

    2024年02月13日
    浏览(40)
  • CSS使两个不同的div居中对齐的三种解决方案

    在CSS中,有多种方法可以让两个不同的div居中对齐,包括相对定位和绝对定位。以下是两种常见的方法: 方法一:使用Flexbox Flexbox是一个用于创建灵活布局的CSS3模块。使用Flexbox,可以很容易地对元素进行居中对齐。 HTML: CSS: 方法二:使用CSS Grid CSS Grid是另一个用于创建二维

    2024年02月10日
    浏览(59)
  • 前端和后端解决跨域问题的方法

    目前很多java web开发都是采用前后端分离框架进行开发,相比于单体项目容易产生跨域问题。  后端接收到请求并返回结果了,浏览器把这个响应拦截了。 浏览器 基于同源策略,如果请求的网页和当前的服务 不是同源的 ,并且发送的是 XHR (XMLHttpRequest)请求,就会产生跨域

    2024年04月26日
    浏览(41)
  • Java跨域问题的几种后端解决方式

    跨域指的是:浏览器不能执行其他网站的脚本,从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。跨域是由浏览器的同源策略造成的,是浏览器施加的安全限制。a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所

    2024年02月08日
    浏览(40)
  • 【问题解决】Unable to locate adb的三种解决方法

    在控制台将占用端口的进程kill掉, netstat -anp | grep 5037 显示有哪些程序占用,使用 kill -9 进程号 即可。 首先检查检查Android studio sdk中的 Android SDK Platform-Tools 工具是否安装。在 File-Settings-Android SDK 中,如果未安装需要打勾安装。 然后在左上角选择 File-Project Structure-Project SDK

    2024年02月12日
    浏览(55)
  • Vue调用后端api接口出现跨域问题,只要三步解决问题

    问题: 当我们在自己的个人电脑上去进行vue调用后端的操作时,经常会遇到跨域问题 解决方式: 1.在Vue项目中调用api接口的地方加上 2.在后端代码项目重写Filter类 3. 在控制类方法上加上允许跨域的注解 搞定收工:  

    2024年02月15日
    浏览(34)
  • 前端调用DRI后端API出现跨域资源共享(CORS)问题解决办法

    目录 1. 引言 2. 跨源资源共享和实现方法 3. 在Django项目中配置django-cors-headers库 Reference 在进行后端API开发时,有时会遇到“跨域资源共享 (CORS) 请求...被阻止“的错误,如图1所示。本文讲解如何在使用DRF(Django REST Framework)的后端API开发项目中解决这个问题。 A cross-origin re

    2024年04月25日
    浏览(51)
  • Spring Boot学习随笔- 后端实现全局异常处理(HandlerExceptionResolver),前后端解决跨域问题(@CrossOrigin(局部解决)自定义跨域配置类(全局))

    学习视频:【编程不良人】2021年SpringBoot最新最全教程 异常处理作用:用来解决整合系统中任意一个控制器抛出异常时的统一处理入口 传统单体架构下的处理方式 配置全局异常处理类 resolveException :当控制器方法出现异常时,如果该方法没有try...catch,则会进入当前方法 针

    2024年02月04日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包