跨域相关问题:为何会产生跨域?如何解决跨域?

   之前面试官基本都是问如何解决跨域问题,今天遇到一个公司问什么是跨域,为什么会产生跨域问题,虽然之前看过相关的问题,但是突然感觉有点蒙,自我感觉回答的不是很全面和准确,所以啊,看问题还真是得知其然并知其所以然,今天算重新加深一下对跨域的理解!

首先为何会产生跨域?

跨域问题是因为浏览器的同源策略引起的,一种浏览器的安全机制,要求协议,域名,端口,都要一致!

贴(tou)张图,一目了然,?

如何解决跨域?

  1. jsonp,只支持get,不支持post,需要调用前端和被调用后端配合(比较常用)
  2. 后端HttpClient进行转发,两次请求,效率低,安全(类似Nginx反向代理)
  3. 服务端设置响应头,允许跨域,适于小公司快速解决问题
  4. Nginx搭建API接口网关
  5. Zuul搭建API接口网关

后四种都属于服务端设置,对于目前还是一个纯前端的我来说,先把前端的搞懂再说,所以在此只说前端的jsonp

  • jsonp:原理我在面试题总结那篇文章中说过,在此只贴代码

$(".btn").click(function(){
    //向头部输入一个脚本,该脚本发起一个跨域请求
    $("head").append("<script src='http://localhost:9090/student?callback=getData'><\/script>");
})
//后端获取callback参数的值getData,并以getData为函数名将数据以参数的形式返回

function getData(result){//前端获取服务端返回数据
    console.log(result)
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值