最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 浏览器的同源策略以及如何实现跨域

    正文概述 掘金(青咕咕)   2021-07-01   617

    一、首先我们先来说说什么是同源策略:

    同源策略:是浏览器针对不同源的脚本或文本的访问进行限制,是浏览器的一个基本的安全功能。
    同源包括‘协议+域名+端口’三者相同;
    浏览器中大部分标签内容是受同源策略限制的,以下三个可以不受影响:
    <img src=xxx>
    <link href=xxx>
    <script src=xxx>
    

    二、如何实现跨域

    下文主要讲三个比较主流的跨域方案:

    1、jsonp

     它的本质是利用script标签(src属性)不受浏览器的同源策略限制的特性。
     虽然使用比较简单,但是只支持get请求,有安全问题容易受到xss攻击,且需要前后端配合。
     
    
    //写一个简单的例子
    //前端部分代码
    <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:8000/list?fruit=apple&color=red&callback=eatFruit';
       $('body').append(frame);
    });
    
    function eatFruit(res){
        alert(res.message+res.fruit+'是'+res.color);
    }
    </script>
    //后端部分代码
    router.get('/list', (req, res) => {
      let data = {
        message: 'success!',
        name: req.query.fruit,
        age: req.query.color
      }
      data = JSON.stringify(data)
      res.end('eatFruit(' + data + ')');
    });
    
    

    2、比较常用的方案cors

     cors是一种跨域资源共享的机制,它使用额外的http头来告诉浏览器让运行在一个origin上的
     web应用被准许访问来自不同源服务器上的指定资源。
     
    
    // 以node为例
    var express = require('express');
    var app = express();
    var allowCrossDomain = function (req, res, next) {
      res.header('Access-Control-Allow-Origin', 'http://localhost:3001');
      res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
      res.header('Access-Control-Allow-Headers', 'Content-Type');
      next();
    }
    app.use(allowCrossDomain);
    

    3、最方便的跨域方案nginx

      nginx是一款极其强大的web服务器,其优点是轻量级,启动快,高并发。使用nginx的反向代理。
      反向代理的原理是因为所有的请求都必须先经过nginx的处理,
      nginx作为代理服务器再将请求转发给node或者java服务,这样也就能规避同源策略。
      注意:直接请求nginx也是会报跨域错误的要设置允许跨域。
       
    

    另外之前做过websocket在线客服的功能,来简单说下它的通信: websocket是一种双向通信协议,在建立链接之后,websocket的server与client都能主动向对方发送或接收数据,连接建立好之后client与server之间的双向通信就与http无关了,因此可以跨域。


    起源地下载网 » 浏览器的同源策略以及如何实现跨域

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元