使用Vue配合Express框架构建SPA应用遇到的"Access-Control-Allow-Origin"问题

问题:Access-Control-Allow-Origin
Access to XMLHttpRequest at 'http://127.0.0.1:3000/api/xxx?page=1' 
from origin 'http://localhost:8080' has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
原因

跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。 这里列举一个经典的列子:

协议跨域
http://a.baidu.com访问https://a.baidu.com
端口跨域
http://a.baidu.com:8080访问http://a.baidu.com:80
域名跨域
http://a.baidu.com访问http://b.baidu.com

现在很多公司都是采用前后分离的方式开发。那么出现经常和会跨域打交道。这里前端使用的Vue,后端使用的NodeJs。

解决办法

在express入口文件引入express之后加上

app.use("*", 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");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    if (req.method === 'OPTIONS') {
        res.send(200)
    } else {
        next()
    }
});

重启express服务器。
在开发阶段可以解决Access-Control-Allow-Origin的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值