简单理解一下什么是跨域

1. 什么是跨域?

  1. 因为浏览器有同源策略,是判断一个浏览器是否合格的最基本的标准

  2. 什么是同源?

    • 是浏览器通过这个策略,将不同的网站分类(隔离),就确保了信息的安全。你想一想要是没有这个东西,我们是不是可以随便请求淘宝接口,甚至给post一些信息到它们接口上,可能就乱套了
  3. 所以它是很必要的,我们再来明确一个概念,需要达到3个条件,相同协议相同域名相同端口,才能通讯。

项目Value是否允许通讯
http://www.A.com 和https://www.A不同协议不允许
http://www.A.com 和http://www.B.com不同域名不允许
http://www.A.com:8080 和 http://www.A.com不同端口不允许
http://www.A.com/4399/A 和http://www.A.com/4399/A/B三个条件满足才允许

二,解决跨域问题 (第一种解决方法是从前端入手)

  1. 可以通过jsonp
    -首先我们先明白jsonp的原理,通俗的讲就是动态生成一个script然后script不受同源策略的限制,就可以去请求不同域的接口了(不能理解?想象一下你的jQuery是怎么引入的,是不是script后面一个网址?道理是一样的。)
// 使用Jq的ajax 
 $ajax({
 // 请求的路径(请求接口) url 
 url:"http://www/A.com/B",
 // 请求的方法  GET
 type:"GET",
 // 请求方式为jsonp
 datatype:"jsonp",
 // 这里可以使用自定义回调函数名
 jsonpCallback:"bacData",
 // 等待服务器返回的数据
 data:{}
 })

但是jsonp只能GET,而不能POST。
jquery已经封装好这个函数,只要通过这个模式去写就行了,自动生成script去执行。

  1. 跨域资源共享,CORS
  • 这个说白了就是后台代码允许某个域名下的请求,比如我是后台开发的人员,我可以写上允许 http://www.beginner.com 所有的接口调用。
  • (后端做的,不需要前端做任何的解决跨域的操作,直接ajax请求就行了),让后端大佬写上,你就不用考虑这个跨域了
//服务端代码写上,允许http://www.beginner.com下的所有请求
'Access-Control-Allow-Origin' : 'http://www.beginner.com'

  1. 后端代理
    • 是如果这个后台不是你们团队写的,你又很想去调用这个接口,那怎么办呢?

    • 很简单,同源策略是哪里来的,浏览器规定的,那你不要在浏览器内发起请求不就好了!!

    • 你可以写一个简单的后端程序,让你的调用接口请求让它去做。然后这个后端程序是你控制的,所以你想怎么请求都行。easy

var http = require("http");
var httpProxy = require('http-proxy'); 
var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) { 
    delete req.headers.host;
 	proxy.web(req, res, {target: 'http://www.beginner.com'}); 
}); 
console.log("proxy listening on port 80") 
server.listen(80);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值