前端实现跨域的三种方式

1.什么是跨域?

是浏览器的一种安全策略。当浏览器的某个页面要访问的服务器地址,跟该页面的地址,存在协议,域名,端口号任一不相同时,浏览器视为跨域访问。因为三个任一不同,则为不同源。

2.如何实现跨域?跨域的技术有哪些?

  • 图像ping
  • jsonp跨域
  • CORS(跨域资源共享)需要后端同志设置响应头:Access-Control-Allow-Origin
  • NGINX代理
  • websocket协议跨域

3. 先看下jsonp跨域

  • 首先是利用script标签的src属性来实现跨域。

  • 通过将前端方法作为参数传递到服务器端,远程服务端通过调用指定的函数并传入参数来实现传递参数,将fn(response)传递回客户端。
    如图:
    在这里插入图片描述

  • 由于使用script标签的src属性,因此只支持get方法。

上面图的实例如下:
前端代码:

 function jsonp(req){
    var script = document.createElement('script');
    var url = req.url + '?callback=' + req.callback.name;
    script.src = url;
    document.getElementsByTagName('body')[0].appendChild(script);
  }
  function hello(res){
    console.log('hello1111 ' + res.data);
  }
  jsonp({
    url : 'http://localhost:3000/func',
    callback : hello
  });

后端服务器代码:

app.get('/func', function (req, res) {
  if(req.query.callback){
    console.log(req.query.callback);
    var str = req.query.callback + '(' + JSON.stringify(data) + ')';
    res.end(str);
  } else {
    res.end();
  }
});

结果:
在这里插入图片描述

4.Access-Control-Allow-Origin

MDN中描述:响应头指定了该响应的资源是否被允许与给定的origin共享。无特殊要求,后端可设置“*”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值