iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >springboot跨域问题带来的BUG怎么解决
  • 524
分享到

springboot跨域问题带来的BUG怎么解决

2023-06-27 10:06:42 524人浏览 八月长安
摘要

这篇文章主要介绍了SpringBoot跨域问题带来的BUG怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot跨域问题带来的BUG怎么解决文章都会有所收获,下面我们一起来看看吧。需求前端用

这篇文章主要介绍了SpringBoot跨域问题带来的BUG怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot跨域问题带来的BUG怎么解决文章都会有所收获,下面我们一起来看看吧。

需求

前端用了个富文本插件 Ueditor ,插件初始化的时候需要从后端获取 config 配置。

入坑经历

首先看下最开始的代码:

 @RequestMapping(value = "/getConfig")    public Object getConfig(httpservletRequest request){       return readConfig();    }     private UedConfig readConfig() {        String path = this.getClass().getResource("/").getPath();        FileInputStream fileInputStream = new FileInputStream(path + "config/ued_config.JSON");        //读出来,转成对象返回        ...    }

代码大概就是这样,然后启动起来之后,前端告诉我没有获取到信息。纳尼,我 postman 自测都没问题,有数据返回。然后阿粉跑去问前端,有报错吗?前端说跨域了。当时阿粉就不乐意了,马上 ctrl+c 加上ctrl+v 把后端处理跨域请求的配置发给前端。然后前端告诉我是 jsonp 请求跨域。阿粉一脸懵逼??? jsonp 跨域?没听说过啊。马上找度娘去,果然一搜全是处理方式。因为是 springboot 项目,所以找了个最简单的。看代码:

@ControllerAdvicepublic class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {    public JsonpAdvice(){        super("callback");    }}

看,是不是很简单。要是 AbstractJsonpResponseBodyAdvice 这个单词下面没有红线就更完美了。没有引入类吗?怎么难得倒阿粉呢。alt + enter,嗯哼,什么情况,没有这个类?不可能啊。马上问度娘一下,原来这个类是 springboot 2.0以下才有。那怎么办呢?2.0以上好像没有处理 jsonp 跨域的方式啊。阿粉又在百度搜啊搜,果然,皇天不负有心人,阿粉看到 jackson 里面有个类 JSONPObject 可以处理,然后阿粉改了一下代码:

@RequestMapping(value = "/getConfig")public Object getConfig(String callback,HttpServletRequest request){    return new JSONPObject(callback,readConfig());}

然后重启,自测没问题。让前端试下,可以正常获取。OK,完美。

后面项目完成了,前后端也对接完了,发到测试环境,让测试人员测试。Duang~一个bug扔阿粉头上,获取配置失败。不可能啊,肯定是前端的问题,跑去找前端让前端看下。前端看了之后给我来了一句,测试环境不跨域。瞬间一万头草尼玛从头上飘过。阿粉辛辛苦苦花了几个小时才把跨域问题处理了,你给我说测试环境不跨域。

哎,没办法,这口锅只能自己含泪抗下了。然后阿粉又改了一次代码:

@RequestMapping(value = "/getConfig")public Object getConfig(String callback,HttpServletRequest request){    return StringUtils.isEmpty(callback) ? readConfig() : new JSONPObject(callback,readConfig());}

还是做了个兼容,因为前端还需要连我本地调试。不过这次应该没有问题了吧,阿粉心里还是有些小得意。提交代码,发测试,搞定。

Duang~同样的bug再一次扔在了阿粉脸上。心都凉了,怎么回事呢?日志也没报错啊。捣鼓半天,不知道什么原因,阿粉只能加写log,因为在测试环境不好调试,也没报错。然后让运维配合一下,然后发现 this.getClass().getResource("/").getPath() 得到的路径不对,阿粉再一次一脸懵逼,这个不是获取项目根路径吗?怎么回事呢。

然后阿粉又厚着脸皮找度娘,果然一下就找到原因了,因为 springboot 集成了Tomcat,项目直接是打成 jar 包运行的,不能通过 this.getClass().getResource("/").getPath() 这种获取项目根路径的方式来获取,只能通过流的方式,然后阿粉又改了下代码:

private UedConfig readConfig() {    InputStream resourceAsStream = this.getClass().getResourceAsStream("/"+"config/ued_config.json");    //读出来,转成对象返回    ...}

关于“springboot跨域问题带来的BUG怎么解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“springboot跨域问题带来的BUG怎么解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: springboot跨域问题带来的BUG怎么解决

本文链接: https://www.lsjlt.com/news/309713.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • springboot跨域问题带来的BUG怎么解决
    这篇文章主要介绍了springboot跨域问题带来的BUG怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot跨域问题带来的BUG怎么解决文章都会有所收获,下面我们一起来看看吧。需求前端用...
    99+
    2023-06-27
  • 怎么解决SpringBoot跨域问题
    这篇文章给大家分享的是有关怎么解决SpringBoot跨域问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。允许全部请求跨域许可的代码需要继承WebMvcConfigurerAdapter类。@Configura...
    99+
    2023-06-28
  • springboot怎么解决跨域问题
    在Spring Boot中解决跨域问题可以通过以下几种方式: 使用注解@EnableWebMvc和@CrossOrigin:在S...
    99+
    2023-10-25
    springboot
  • SpringBoot中的跨域问题怎么解决
    本篇内容主要讲解“SpringBoot中的跨域问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中的跨域问题怎么解决”吧!1、跨域访问报错当一个请求url的协议、域名...
    99+
    2023-06-29
  • Springboot怎么解决跨域请求问题
    这篇文章主要介绍“Springboot怎么解决跨域请求问题”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Springboot怎么解决跨域请求问题”文章能帮助大家解决问题。1、什么是跨域由于浏览器同源...
    99+
    2023-07-06
  • 解决Vue+SpringBoot+Shiro跨域问题
    目录一、配置Vue前端1、开发跨域配置2、生产跨域配置二、配置spring boot相信大家刚开始做都会遇到这个问题,在网上找了好多也不管用,都写的不全, 在这里记录一下,希望对大家...
    99+
    2024-04-02
  • vue的跨域问题怎么解决
    这篇“vue的跨域问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue的跨域问题怎么解决”文章吧。在vue中,跨...
    99+
    2023-07-04
  • Vue+SpringBoot+Shiro跨域问题的解决方法
    这篇文章将为大家详细讲解有关Vue+SpringBoot+Shiro跨域问题的解决方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、配置Vue前端在config下index.js中配置代理信息注意:这...
    99+
    2023-06-15
  • SpringBoot跨域问题的解决方法实例
    谈到跨域问题,首先我们要认识一下浏览器的同源策略 百度百科对同源策略的解释 当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面 当浏览器的百度tab页执行一个脚本的时候会检查...
    99+
    2024-04-02
  • SpringBoot跨域问题的五种解决方式
    目录一、什么是跨域 CORS二、为什么会有跨域问题三、有哪些跨域类型四、解决跨域问题的五种方式1. 添加跨域配置类2. 重写WebMvcConfigurer3. 注解 @CrossO...
    99+
    2024-04-02
  • vue跨域问题怎么解决
    1、可以在后端服务器中进行配置,允许指定的域名或IP地址访问后端API,这样就可以解决跨域问题。常用的方法是在服务器端添加CORS(...
    99+
    2023-05-13
    vue跨域问题 vue
  • react跨域问题怎么解决
    在 React 中解决跨域问题通常有以下几种方法:1. 设置代理:在开发环境中,可以通过设置代理服务器来解决跨域问题。可以在 `pa...
    99+
    2023-08-19
    react
  • 怎么解决WebSocket跨域问题
    怎么解决WebSocket跨域问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。WebSocket通信是点对点:一是建立WebSocket链接的URL加上时间戳保证通信会话是唯...
    99+
    2023-06-09
  • ajax跨域问题怎么解决
    在Ajax请求中,由于浏览器的同源策略限制,如果请求的域名、端口或协议与当前页面不同,则会出现跨域问题,无法正常获取数据。以下是几种...
    99+
    2023-05-13
    ajax跨域问题 ajax
  • 怎么解决ajax跨域问题
    本篇内容主要讲解“怎么解决ajax跨域问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决ajax跨域问题”吧!什么是ajax跨域ajax跨域的原理aja...
    99+
    2024-04-02
  • vue2.0跨域问题怎么解决
    本篇内容主要讲解“vue2.0跨域问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue2.0跨域问题怎么解决”吧! 一种解决方案: 一般的情况下...
    99+
    2024-04-02
  • java怎么解决跨域问题
    为了解决 Java 中的跨域问题,可以采取以下方法: 修改服务器端配置:在服务器端的响应中添加响应头,允许指定的源访问该资源。可...
    99+
    2024-02-29
    java
  • JavaScript跨域问题怎么解决
    这篇文章主要介绍了JavaScript跨域问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript跨域问题怎么解决文章都会有所收获,下面我们一起来看看吧。1.什么是跨域我们常常会在页面上使...
    99+
    2023-06-27
  • javascript怎么解决跨域问题
    这篇文章主要介绍了javascript怎么解决跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。javascript 跨域问题以及解决办...
    99+
    2024-04-02
  • SpringSecurity导致SpringBoot跨域失效的问题解决
    目录1、CORS 是什么2、预检请求3、三种配置的方式3.1 @CrossOrigin 注解3.2 实现 WebMvcConfigurer.addCorsMappings 方法3.3...
    99+
    2023-01-11
    SpringSecurity SpringBoot跨域失效 SpringSecurity SpringBoot跨域
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作