Quasar Vue Springboot 跨域问题 No 'Access-Control-Allow-Origin' header is present on the requested

困扰了近半个月的跨域问题解决了。

服务端是Springboot,前端是Vue

服务端地址是:http://localhost:8066

前端地址是:http://localhost:6006

前端发送请求使用的是axios,之前设置的baseURL是 process.env.BASE_API, 这个baseURL我在别的地方没有指定,因此是空,后来发现静态图片一直加载不上,我把baseURL重新设置正确为:process.env.API,在quasar.conf.js中设置了对应的初始化值: ctx.dev

    build: {
      scopeHoisting: true,
      // vueRouterMode: 'history',
      // vueCompiler: true,
      // gzip: true,
      // analyze: true,
      // extractCSS: false,
      env: ctx.dev
        ? { // so on dev we'll have
          API: JSON.stringify('http://localhost:8066')
        }
        : { // and on build (production):
          API: JSON.stringify('http://69.171.69.13:3000')
        },
      extendWebpack (cfg) {
        cfg.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /node_modules/
        })
        cfg.resolve.alias = {
          ...cfg.resolve.alias, // This adds the existing alias

          // Add you own alias like this
          '@': resolve('src')
        }
      }
    },

之后,静态内容还是不能正确加载,此时报错为:

quasar.ios.esm.js?03a0:6 OPTIONS http://localhost:8066/article/all 403

Access to XMLHttpRequest at 'http://localhost:8066/article/all' from origin 'http://localhost:6006' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这就是跨域的问题了,在查找网上的解决办法后,犹犹豫豫一直没觉得是后端的问题,便一直在VUE这块设置请求的参数头header

因为用的是quasar,和正常的vue的es6配置文件不一样,网上也没参考的例子,便一直在尝试琢磨,其中一些参考的设置如下,虽然最后都没用,不过以后别的地方可能会用到(本地设置过后台以后,不需要此设置):

service.interceptors.request.use(config => {
  // 加上权限过滤,发送请求前 的操作
  const token = authGate.getToken() //获取token,没用的话 可以去掉
  config.headers['Access-Control-Allow-Origin'] = '*'
  config.headers['Access-Control-Allow-Headers'] = 'X-Requested-With,Content-Type'
  config.headers['Access-Control-Allow-Methods'] = 'PUT,POST,GET,DELETE,OPTIONS'
  config.headers['Authorization'] = token
  return config
}, error => {
  // 过滤掉错误请求后 的操作
  console.log(error)
  return Promise.reject(error)
})

我在前端写来写去,始终没有解决问题,于是便开始从后端着手,第一次处理就搞定了。

后台Springboot在启动项中添加CorsFilter的过滤器,在前端发送请求的时候自动处理跨域的请求。

具体的跨域过程本文就不阐述了,网上好多都有写:

public class ZstApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZstApplication.class, args);
	}

	@RequestMapping(value = "/",method = RequestMethod.GET)
	public String index(){
		return "index page";
	}

	@Bean
	public CorsFilter corsFilter(){ //设置跨域
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        source.registerCorsConfiguration("/**",corsConfiguration);
        return  new CorsFilter(source);
    }
}

这样便可以正常处理静态图片和文件,也可以正常访问了。

Vue前端不用做任何改变。

 

原文链接:https://ithinkcry.cn/blog/view/detail/2c9ad8cc67a2e91f01680a1ac8af0007

我的个人公众号


http://www.niftyadmin.cn/n/814776.html

相关文章

Java16Object以及常用类

Object类 Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。 object 中的equals方法返回值为boolean类型的是判断两个对象是否想打,equals方法,用…

在springboot中使用redis的pubsub进行消息的订阅发布

近日遇到需要发消息的情况,脑中直接浮现了kafka和emq(rabbitMQ)工具。 但是我仔细一想,发现了问题: 1.这次需要的消息功能非常简单,用量也不大 2.服务器的内存和硬盘都很小,还是单节点,kafka和mq这种会对…

Java 中清空map

本文链接&#xff1a;https://blog.csdn.net/TsuiXh/article/details/87879004在开发中在使用Map时&#xff0c;如果需要将Map作为临时的数据存储和处理&#xff0c;可以不用每次都去新建一个Map&#xff0c;可以使用clear方法来进行清空Map。 Map<String, Object> map …

SparkConf和SparkContext

任何Spark程序都是SparkContext开始的&#xff0c;SparkContext的初始化需要一个SparkConf对象&#xff0c;SparkConf包含了Spark集群配置的各种参数。初始化后&#xff0c;就可以使用SparkContext对象所包含的各种方法来创建和操作RDD和共享变量。Scala&#xff1a;val conf …

记事本软件误删后如何找回?

随着智能手机的普及&#xff0c;各种优秀的手机软件层出不穷&#xff0c;成为我们生活和工作中的得力助手。其中&#xff0c;记事本软件在手机上的应用也越来越受欢迎。 一款记事本可以给用户带来许多便利和帮助。与传统的纸质记事本相比&#xff0c;手机记事本具有更多的功能…

阿里云服务器养只大虫子:Redis漏洞挖矿造成CPU100%的解决办法

之前在9月份的时候&#xff0c;我的阿里云服务器出现过一次被挖矿的情况&#xff0c;也是cpu爆满&#xff0c;后来发现是因为mysql的漏洞。 当时抓着mysql一顿处理&#xff0c;新建用户&#xff0c;强密码&#xff0c;设权限&#xff0c;nologin&#xff0c;可算是正常了。 这…

Springboot 不使用jar包 使用war包部署

原文&#xff1a;https://ithinkcry.cn/blog/view/detail/2c9ad8cc68efcae60168eff4527e0000 由于另一个服务需要挂上二级域名&#xff0c;所以使用了Nginx来做反向代理。 但是由于使用的是springbootthymeleaf&#xff0c;后来的项目又是vuespringboot前后分离&#xff0c;造…

Java 中的JSON 字符串

类库选择 Java中并没有内置JSON的解析&#xff0c;因此使用JSON需要借助第三方类库。 下面是几个常用的 JSON 解析类库&#xff1a; Gson: 谷歌开发的 JSON 库&#xff0c;功能十分全面。FastJson: 阿里巴巴开发的 JSON 库&#xff0c;性能十分优秀。Jackson: 社区十分活跃且更…