这是因为两个项目的域名不同,浏览器认为它们是不同的网站,禁止它们之间的跨域操作。解决方法有以下几种:

  1. 在服务器端设置跨域头部

在服务端的响应头中添加 Access-Control-Allow-Origin 头部,指定允许跨域的域名。例如,在 Node.js 中可以使用以下代码:

res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
  1. 使用代理

在一个项目中设置代理,将请求转发到另一个项目中。例如,在 Vue 项目中可以在 vue.config.js 中配置代理:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        ws: true,
        changeOrigin: true
      }
    }
  }
}
  1. 使用 iframe

将两个项目分别嵌入到不同的 iframe 中,让它们互相独立运行,通过 postMessage 进行通信。不过这种方法比较麻烦,而且会影响用户体验。

两个可正常运行的线上vue项目在同一个页签内互相跳转会报跨域错误

原文地址: https://www.cveoy.top/t/topic/bqOp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录