JavaScript跨域

作者: Beauty_Beast | 来源:发表于2018-11-14 21:10 被阅读7次

跨域这个问题,其实早就想学习一下,奈何没有时间;本文从几个角度学习跨域1.什么是跨域;2.跨域解决了什么问题;3.跨域实现;

1.什么是跨域?

 在不同域(协议不同 || 域名不同 || 或端口不同)之间进行数据传输或者通信就是跨域;举例:http://baidduyun.com/av.html 与https://baiduyun.com/a.html之间通信就产生了跨域,因为http与https协议不同;

2.跨域的作用?

在1中已经说了,在不同域的页面中相互传数据;

3.怎么实现跨域?

其实实现跨域的方法,之前在网上查找的资料中至少发现了N种,下边只列举自己认为最容易接受和理解的两种;

(1).最为常用的jsonp方式实现跨域

在b.com/c.html中使用如下script标签

跨域代码

在http://a.com/data.php返回的 必须是一个可执行的 js文件;所以在data.php中它的代码可能是这样的:

php代码,返回可执行的js

所以回调函数要执行的其实是:callBack (['a','b','c']),从a.com跨域请求到的数组数据['a','b','c'];如果项目中 使用了jquery框架的话就更方便了:

原理和jsonp是一样的

(2).使用window.nama,这得益于在在一个窗口(window)的生命周期内,窗口载入的所有的页面都是共享一个window.name的特性;局限性是window.name只能传输一段字符串;字符串大小限制为2M大小;浏览器在同源或者不同源(即跨域)的window.name都是共享的;比如有一个www.example.com/a.html页面里的js要获取另一个位于不同域上的页面www.cnblogs.com/data.html里的数据。www.cnblogs.com/data.html页面里的代码很简单,就是给当前的window.name设置一个www.example.com/a.html页面想要得到的数据值。data.html里的代码:

在data.html页面中进行的操作

在a.html中怎么把data.html页面加载进来?显然不能直接在a中使用window.loacation而是要影式的加载data.html页面,及使用一个影藏的iframe来充当中间角色;

window.name进行跨域的过程

将iframe设置为影藏;并设置其src为要获取数据的页面,这里为data.html;然后iframe加载时,在a.html中再把iframe的src设置为和a.html同源的页面,不然获取不到window.name的值;

关于跨域的实现方式还有:document.domain;Html5中window.postMessage方法等等;本文参考博客:https://www.cnblogs.com/2050/p/3191744.html

相关文章

  • WebStorm本地调试的跨域问题

    JavaScript 跨域 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名...

  • HTML-获取iframe元素的正确方法

    跨域相关文章详解js跨域问题JavaScript跨域总结与解决办法 解释最清楚的jsonpWhat is JSON...

  • jsonp

    参考:轻松搞定JSONP跨域请求参考:JavaScript 跨域总结与解决办法要理解跨域,先要了解一下“同源策略”...

  • 通过script标签实现跨域

    跨域 什么是跨域? 跨域问题是由于javascript语言安全限制中的同源策略造成的。同源策略是由Netscape...

  • 跨域的概念

    1.跨域问题 什么是跨域? JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。(同源策略,浏览...

  • js如何解决跨域问题

    JavaScript跨域总结与解决办法 什么是跨域 1、document.domain+iframe的设置 2、动...

  • 简述json和jsonp的区别

    1. 先说一下跨域的概念: JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。 跨域请求概念 ...

  • vue2.x中的跨域

    一、什么是跨域 url的组成 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢...

  • 2019-01-16

    一、什么是跨域 url的组成 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢...

  • 珠峰 AJAX --- JSONP跨域

    珠峰 AJAX --- JSONP跨域AJAX(异步 javascript and XMLHTTPReq...

网友评论

    本文标题:JavaScript跨域

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