首页 > Web开发 > 详细

关于ajax跨域的一些解决方案

时间:2018-01-04 10:34:28      阅读:297      评论:0      收藏:0      [点我收藏+]

1、JSONP方式解决跨域问题

     jsonp解决跨域问题是一个比较古老的方案(实际中不推荐使用),当然,在实际项目中如果要使用JSONP,一般会使用JQ等对JSONP进行了封装的类库来进行ajax请求

     实现原理:

            JSONP之所以能够用来解决跨域方案,主要是因为 <script> 脚本拥有跨域能力,而JSONP正是利用这一点来实现。

     注意:

            基于JSONP的实现原理,所以JSONP只能是“GET”请求,不能进行较为复杂的POST和其它请求,所以遇到那种情况,就得参考下面的CORS解决跨域了(所以如今它也基本被淘汰了)

2、CORS解决跨域问题

      在Node.js后台配置(express框架)

Node.js的后台也相对来说比较简单就可以进行配置。只需用express如下配置:

app.all(‘*‘, function(req, res, next) {

   res.header("Access-Control-Allow-Origin", "*");

   res.header("Access-Control-Allow-Headers", "X-Requested-With");

  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

  res.header("X-Powered-By", ‘ 3.2.1‘)

       //这段仅仅为了方便返回json而已

   res.header("Content-Type", "application/json;charset=utf-8");

  if(req.method == ‘OPTIONS‘) {

       //让options请求快速返回

       res.sendStatus(200);

   } else {

       next();

   }

});

3、代理请求方式解决接口跨域问题

注意,由于接口代理是有代价的,所以这个仅是开发过程中进行的。

与前面的方法不同,前面CORS是后端解决,而这个主要是前端对接口进行代理,也就是:

  • 前端ajax请求的是本地接口

  • 本地接口接收到请求后向实际的接口请求数据,然后再将信息返回给前端

  • 一般用node.js即可代理

关于如何实现代理,这里就不重点描述了,方法和多,也不难,基本都是基于node.js的。

关于ajax跨域的一些解决方案

原文:https://www.cnblogs.com/skin-blue/p/8191259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!