跨域及解决方案

        跨域,指的是从一个域名去请求另外一个域名的资源,即跨域名请求。

      这是由浏览器的同源策略造成的,是浏览器施加的安全限制, 跨域限制访问,其实是浏览器的限制。 同源策略是浏览器最核心也最基本的安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源 ,这是一个用于隔离潜在恶意文件的重要安全机制。所以跨域问题只在浏览器中出现,如果客户端是APP的话,那跨域问题就不存在了。

非同源限制:

无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

无法对非同源网页的 DOM 和JS对象进行操作

无法向非同源地址发送 AJAX请求 非同源限制

无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

无法对非同源网页的 DOM 和JS对象进行操作

无法向非同源地址发送 AJAX请求

跨域的解决方案: 

  1. 由于同源策略的限制,AJAX请求是不允许进行跨域请求的,但是在HTML中,拥有src和href属性的标签是可以跨域请求外部资源的,如link、script、img等.

    根据<script>标签的特性,开发人员想到了一个解决跨域请求的方法,即JSONP,全名 JSON with padding 。

    JSONPJSONP方法是指,利用script标签的src属性不受同源策略影响的特性,拥有此特性的标签还有imgiframe以及link(存在JSONP劫持漏洞)。

    缺点:需要服务器端的支持,并且仅支持get请求。

  2. CORS:服务器端设置响应头,控制是否允许跨域。

    优点:服务器端控制,支持各种请求方式。

    缺点:会产生额外请求(预检请求)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值