美文网首页
跨域的四种实现方式

跨域的四种实现方式

作者: htkz_117f | 来源:发表于2017-10-23 02:49 被阅读0次

同源策略

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

本域的特征

同协议:如都是http或者https
同域名:如都是http://jirengu.com/ahttp://jirengu.com/b
同端口:如都是80端口

跨域的方案

  1. JSONP
    原理:html中script标签可以引入其他域下的js,比如引入线上的jquery库。利用这个特性,可实现跨域访问接口。需要后端支持
    具体实现
  • 前端在js中定义数据处理函数_fun
  • 创建script标签,src的地址执行后端接口,最后加个参数callback=_fun,来告诉后端需要执行的回调函数名称
  • 服务端在收到请求后,解析参数,计算返还数据,输出 fun(data) 字符串。
  • fun(data)会放到script标签做为js执行。此时会调用fun函数,将data做为参数。这样就可以使用预先定义好的fun函数来处理后端返回的data数据。
    关于jsonp的命名


    jsonp

    关于jsonp的总结


    image.png
  1. CORS
    CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。 实现方式很简单,当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。所以 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样。

  2. 降域
    适用于对不同域的iframe进行操作。因为浏览器的保护,iframe也只有同源的iframe才能使用js对其进行操作,不同源的话就只能再iframe里展示页面。
    例如在http://a.jirengu.com/a.html里面有一个<iframe src="http://b.jirengu.com/b.html"></iframe>
    之后哦我们只需要在js中设置

    document.domain = jirengu.com
    

    来让当前的域进行一个降域,就可以实现js访问了。
    可以看出,降域能够实现的前提是两个域的后面的域名一样才可以。

  3. PostMessage
    原理是向不同源的域去post一个message,然后让另一个域的后台去处理这个message,来返回消息或者显示数据。

    // 请求方发送消息
    window.frames[0].postMessage('123', '*')
    // 请求方接受返回消息
    window.addEventListener('message', function(e) {
      console.log(e.data);
    })
    

相关文章

  • #hello,JS:15 同源策略 & 跨域(JSONP)

    跨域有几种常见的方式?你有没有跨域使用的经验? 方式: 使用jsonp实现跨域?使用cors实现跨域?浏览器另类的...

  • springboot 三种跨域处理方式

    springboot 三种跨域处理方式:1.通过Filter方式实现全局跨域2.通过Interceptor方式实现...

  • 实现前端跨域的几种方式

    1、jsonp跨域实现方式 server.js 2、CORS跨域实现方式 index.html server1.j...

  • PHP跨域问题

    使用iframe方式实现局部刷新,但是iframe不支持跨域 通过script方式,src属性可以实现跨域,但只能...

  • JSONP跨域

    JSONP原理及应用 之前的文章中简单介绍过前端可以实现的跨域方式,这次介绍一种更为常用的跨域方式,但这种跨域方式...

  • 跨域的四种实现方式

    同源策略 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对...

  • AJAX

    题目 手写一个ajax 跨域的常用实现方式 知识点 XMLHttpRequest 状态码 跨域:同源策略,跨域解决...

  • js跨域问题

    来源 javascript中实现跨域的方式总结 第一种方式:jsonp请求;jsonp的原理是利用 标签的跨域特性...

  • 跨域之三:降域 和 postMessage

    本节内容:实现跨域常用的两种方式 —— 降域 和 postMessage 零:跨域报错展示 在非同源情况下,操作 ...

  • ajax跨域--nginx反向代理

    用nginx反向代理实现跨域,是最简单的跨域方式。只需要修改nginx的配置即可解决跨域问题,支持所有浏览器,支持...

网友评论

      本文标题:跨域的四种实现方式

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