美文网首页
前端跨域问题产生原因和解决方法

前端跨域问题产生原因和解决方法

作者: 李丹linda | 来源:发表于2018-10-28 19:55 被阅读0次

一、产生原因

  • 跨域是a页面想要获取b页面资源,如果a,b页面的协议、域名、端口号、子域名不同,所进行的访问都是跨域的,而浏览器一般为了安全都限制了跨域访问,也就是不允许跨域访问资源。

二、解决办法

1.JSONP

  • JSONP是一个非官方协议,它允许在服务器端集成script tags返回至客户端,通过javascript callback的形式实现跨域访问。
  • 基本思想:网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源策略限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来。
    <script type="text/javascript">
        function jsonpCallback(result){
            //alert(result);
            for(var i in result){
                alert(i + ":" + result[i]);     //循环输出
            }
        }
        var JSONP = document.createElement("script");
        JSONP.type = "text/javascript";
        JSONP.src = "http://crossdomain.com/services.php?callback=jsonpCallback";
        document.getElementsByTagName("head")[0].appendChild(JSONP);
    </script>

2.window.name

  • window.name+iframe需要目标服务器响应window.name,window对象有一个name属性,该属性有个特征:即在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的,每个页面对window. name都有读写的权利,window.name 是持久存在一个窗口载入过的所有页面中的!

3.window.postMessage

  • HTML5引入了一个全新的API:跨文档消息传输Cross Document Messaging 。它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)
  • web sockets原理:在JS创建了web sockets之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockets协议。
  • otherWindow.postMessage(message, targetOrigin)
    otherWindow:指目标窗口,也就是给哪个窗口发消息,是window.frames属性的成员或者由window.open方法创建的窗口。
    参数说明:
    (1)message:是要发送的消息,类型为string,object
    (2)targetOrigin:是限定消息接收范围,不限制使用“ * ”

4.CORS

  • 基本思想:使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。

5.web sockets

  • web sockets是浏览器的一种API,它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)
  • web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。

相关文章

  • 【综-网】Http浅析【3】——fetch带cookie的跨域问

    在Http浅析【2】——ajax跨域问题中对跨域产生的原因和解决方法做了说明。这一章节,把带cookie的跨域问题...

  • 前端跨域问题产生原因和解决方法

    一、产生原因 跨域是a页面想要获取b页面资源,如果a,b页面的协议、域名、端口号、子域名不同,所进行的访问都是跨域...

  • 理解ajax跨域

    跨域产生的原因 ionic项目什么情况下会产生ajax跨域问题 针对ionic项目开渔问题我们怎么去避免 跨域产生...

  • 跨域问题解决方法

    每个接触前端的人都会遇到前端经典跨域问题,下面介绍几种我所知道的跨解决方法 1.首先什么是跨域?即为不同域名之间相...

  • 前端跨域问题

    B/S架构的项目中前端经常会遇到跨域问题,什么是跨域问题,常用的解决方法又有哪些呢?可能大多数人对跨域问题都只是一...

  • 前端跨域

    前端做网络轻取i存在跨域问题,准确的说是Ajax实现的数据交互,因为表单不存在跨域问题的哈。现目前主要的解决方法主...

  • AJAX跨域问题讲解

    为什么会发生产生跨域问题? [ 产生跨域的原因 ] 1.浏览器限制2.跨域(协议,域名,端口任何一个不同)3.XH...

  • AJAX跨域问题讲解

    为什么会发生产生跨域问题? [ 产生跨域的原因 ] 1.浏览器限制2.跨域(协议,域名,端口任何一个不同)3.XH...

  • Ajax跨域问题

    一、跨域问题 二、跨域的定义以及产生原因 三、解决思路 四、JSONP 五、跨域解决的方向 五、浏览器禁止检查

  • 跨域问题

    跨域问题 前言 近期回顾自己之前弄的思维导图,这部分还可以再稍微细点,写点东西记录下 原因 跨域问题问题产生的原因...

网友评论

      本文标题:前端跨域问题产生原因和解决方法

      本文链接:https://www.haomeiwen.com/subject/ionptqtx.html