前端跨域请求解决方案(具体代码)

Vue.js 和 Express 提供了两种可以支持跨域的方式。

  1. 首先是 Vue.js 的方式,对于不支持跨域的服务器端的请求,客户端并不能配置影响到服务器端的代码。如果需要完成该功能,可以使用 vue-resorce 的 jsonp() 方法,具体
    请求代码如下:
this.$http.jsonp('/someUrl', [data], [options]).then (successCallback, errorCallback);
  • 注意 : jsonp() 不能发送 post 请求 ,不管是否跨域, 只要用 jsonp() 方式则该请求一定是 get 方式的,因为本质是 script 方式加载的。

使用 jsonp() 方式非常麻烦。

  1. 另一种方式需要更改 Express 编写的服务器代码,在 app.js 中进行全路由的配置,具体的跨域代码如下:
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');
     if(req.method == 'OPTIONS') {
     res.send(200);
     } else {
     next();
     }
});
  • 注意:此代码需要在所有路由配置之前执行,否则代码之前定义的路由不支持此跨域的头部设置。如果不需要所有路由都支持跨域,也可以在单个路由中配置相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值