跨域的解决方案

Posted stdzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨域的解决方案相关的知识,希望对你有一定的参考价值。

1.jsonp

router.get(‘/‘, function(req, res, next) {
  let _callback = req.query.callback
  let { limitNum, pageCode } = req.query; // 获取用户提交的分页数据
  limitNum = limitNum * 1 || 10
  pageCode = pageCode * 1 ||0
  sql.paging(User, {}, {_id: 0}, limitNum, pageCode).then(data => {
    var obj = {
      code: ‘200‘,
      message: ‘success‘,
      data: data
    }
    if (_callback) {
      // 这两步设置发送也是NODE.JS发送JSONP必备 
      res.type(‘text/javascript); 
      res.send(_callback + ‘(‘ + JSON.stringify(obj) + ‘)‘);
    } else {
      res.json(obj)
    }
  })
});
//前端
$.ajax({
  url: ‘http://localhost:3000/users‘,
  dataType: ‘jsonp‘,  // ******************************
  success: function (data) {
    console.log(data)
  }
})

2.cors

//app.js中添加如下代码
var allowCrossDomain = function (req, res, next) { 
  res.header(‘Access-Control-Allow-Origin‘, ‘*‘);//自定义中间件,设置跨域需要的响应头。 
  next(); 
}; 
app.use(allowCrossDomain) ////运用跨域的中间件

3.反向代理

客户端访问服务器会遇到跨域问题,但是服务器与服务器之前不存在跨域问题。

自己请求自己的服务器,自己的服务器去请求别人的服务器。

正向代理」代理的对象是客户端,「反向代理」代理的对象是服务端。

以上是关于跨域的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何解决IE8下Ajax调用时跨域的问题

web api 解决跨域的问题

ningx跨域的方案

使用Nginx来解决跨域的问题

jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。

可跨域的单点登录(SSO)实现方案(附.NET代码)