vue-cli node express本地开发,出现跨域问题怎么解决?

发布于 2022-09-12 00:58:52 字数 2634 浏览 19 评论 0

这几天使用vue-cli 2.x版本创建一个简单项目,使用axios请求数据,node express搭建的简单后台,但是遇到跨域问题实在让我头痛。看了很多的博客仍旧为解决,再此寻求答案。谢谢了

1、在node中的代码,启动node服务器成功,能请求到数据。但解决跨域我找了很多个都无济于事

//全局允许跨域
app.all("*",(req, res, next) => {
  res.header('Access-Control-Allow-Credentials','true');
  res.header('Access-Control-Allow-Origin', req.headers.origin);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
  next();
})
// app.all('*', function (req, res, next) {
//   res.header("Access-Control-Allow-Origin", "");
//   res.header("Access-Control-Allow-Headers", "Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild");
//   res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
//   res.header("X-Powered-By",  "3.2.1")
//   res.header("Content-Type", "application/json;charset=utf-8");
//   next();
// })
// // 自定义跨域中间件
// var allowCors = function(req, res, next) {
//   res.header('Access-Control-Allow-Origin', req.headers.origin);
//   res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
//   res.header('Access-Control-Allow-Headers', 'Content-Type');
//   res.header('Access-Control-Allow-Credentials','true');
//   next();
// };
// app.use(allowCors);//使用跨域中间件

2、在vue中

// main.js全局 axios
import Axios from 'axios'
Vue.prototype.$ajax = Axios
btn(){
        this.$ajax.get('http://localhost:3000/test')
        .then(res=>{
          console.log(res)
        })
        .catch(err=>{
          console.log(err)
        })
      }

报错1.png

我想,后端要是开启了允许跨域,前端就不需要代理了,我打开了浏览器跨域插件,还是一样的。于是我就改xue-cli中的配置文件:config/index.js

proxyTable: {
      '/api': {  //代理地址  
          target: 'http://localhost:3000/',  //需要代理的地址  
          changeOrigin: true,  //是否跨域  
          secure: false,      //是否启用https
          pathRewrite: {  
              '^/api': ''  
          }
      }
    },

更改请求URL:

btn(){
        this.$ajax.get('/api/test')
        .then(res=>{
          console.log(res)
        })
        .catch(err=>{
          console.log(err)
        })
      }

但结果却给我这个:2.png
看着像是不走代理,我很纳闷,我以前使用这样的代理就没事,为什么现在有事了呢?

老哥们 你们遇到吗?我无解了………………

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七七 2022-09-19 00:58:52

**我被坑惨了,其实这个只要清除浏览器缓存就行,我怎么去说啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~
欲哭无泪~~~~~~~~~~~~~~~~**

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文