zoukankan      html  css  js  c++  java
  • 什么是跨域?跨域请求资源的方式有哪些?


    什么是跨域?跨域请求资源的方式有哪些?
    1.什么是跨域?
    由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意与当前页面地址不同就是跨域。存在跨域的情况
    1.网络协议不同,如http协议访问https协议
    2.端口不同,如80端口访问8080端口
    3.域名不同,如qianduanblog.com访问百度.com
    4.子域名不同,如abc.qianduanblog.com访问def.qianduanblog.com。域名和域名对应的ip,如www.a.com访问20.205.28.90
    2.跨域请求资源的方式
    1.proxy代理
    定义和用法:proxy代理用于将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果传递给前段
    实现方法:通过nginx代理
    注意点:如果代理的是http协议的请求,那么proxy首先需要信任该证书(尤其是自定义证书)或者忽略证书检查,否则你的请求无法成功
    2.CORS(Cross-Origin Resource Sharing)
    定义和用法:是现代浏览器支持跨域资源请求的一种最常用的方式
    使用方法:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:
    res.write(200,{
    "Content-Type":"text/html;charset=UTF-8",
    "Access-Control-Allow-Origin":"http://localhost",
    "Access-Control-Allow-Methods":"GET,POST,OPTIONS",
    "Access-Control-Allow-Headers":"X-Requested-With,Content-Type"
    });
    3.jsonp
    定义看和用法:通过动态插入一个script标签。浏览器对script的资源引用没有同源限制,同时资源加载到页面后会立即执行(没有阻塞的情况下)
    特点:通过情况下,同通过动态的创建script来读取它域的动态资源,获取的数据格式一般为json格式
    实例如下:
    <script>
    <function testjsonp(data){
    console.log(data.name);//获取返回的结果
    }
    </script>
    <script>
    var _script=document.createElement('script');
    _script.type="text/JavaScript";
    _script.src="http://localhost:8080/jsonp?callback=testjsonp";
    document.head.appendChild(_script);
    </script>
    缺点:
    1.这种方式无法发送post请求
    2.另外要确定jsonp的请求是否失败并不容易,大多数框架的实现都是结合超时时间来判定的

  • 相关阅读:
    libgdx 2D 粒子效果
    libgdx robovm binding umeng
    libgdx 3D Bullet 碰撞检测三
    《学习CSS布局》学习笔记
    保研机试准备之常用机试代码
    保研面试准备之自然语言处理知识点梳理
    软件工程应用与实践复习笔记
    Git学习笔记
    C、C++、C#中struct的简单比较
    从PEP-8学习Python编码风格
  • 原文地址:https://www.cnblogs.com/juddy/p/14178416.html
Copyright © 2011-2022 走看看