20 跨域的解决方法

1.什么是跨域

2.跨域解决方案

1.什么是跨域

即同源策略:

  • 源:指的是协议、域名和端口号
  • 同源:指协议、域名和端口号都相同
  • 同源策略:浏览器的一个安全功能,不同源的脚本在不能读写对方的资源
  • Cookie、LocalStorage和IndexDB 无法读取
  • DOM 和 JS 对象无法获取
  • Ajax 请求发送不出去

2.跨域解决方案

2-1 JSONP

客户端:

<button id="btn">点击</button>
  <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
  <script>
    $('#btn').click(function(){
			var frame = document.createElement('script');
			frame.src = 'http://localhost:3000/article-list?name=leo&age=30&callback=func';
			$('body').append(frame);
		});
		
		function func(res){
			alert(res.message+res.name+'你已经'+res.age+'岁了');
		}
  </script>

服务器端:

router.get('/article-list', (req, res) => {
  console.log(req.query, '123');
  let data = {
    message: 'success!',
    name: req.query.name,
    age: req.query.age
  }
  data = JSON.stringify(data)
  res.end('func(' + data + ')');
});

在这里插入图片描述

  1. 浏览器脚本:利用script可跨域的特性,其src属性和后台地址一样同时传递参数和定义callback
  2. 服务器端:输出对callback的调用。
2-2 CORS
  • CORS 是一个W3C标准,全称“跨域资源共享”(Cross-origin resource sharing)
  • 允许浏览器向不同源的服务器发出XMLHttpRequest请求
2-3 反向代理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值