js里的同源

JavaScript010

js里的同源,第1张

/*------------同源---------------*/

同源:当两个接口的协议、域名、端口号都相等时,这俩接口是同源的,只要有一个条件不相等,则非同源。不是同源的两个页面不能互相访问本地缓存、不能互相修改dom节点、不能使用ajax请求对方接口数据

如何判断两个网页同源

1、协议相同       2、域名相同          3、端口号相同

同源策略目的:1、保护本地缓存不被读取2、保护网站不被其他网站修改

同源策略的限制:

1、Cookie、localStorage、indexDB无法读取

2、dom节点无法获得。

3、AJAX请求无法发送。

JSONP:利用scritp标签请求外部服务器中的数据,从而绕开同源策略对AJAX请求数据的限制。

jsonp的本质:利用script标签中src属性可以加载任意文件的特性,通过这个属性来访问数据接口(添加一个回调函数作为参数),而数据接口会返回一个由回调函数名包裹的json数据,从而达到获取跨域数据的目的。

/*------------封装JSONP---------------*/

creatScriptTag('http://10.0.159.198/data.php?callback=abc')

function abc (data) {

alert(data)

}

ajax和jsonp其实本质上是不同的东西。

ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加标签来调用服务器提供的js脚本。

同源:协议、域名、端口号都相同。

同源策略限制:从一个源加载的文档或脚本与另一个源的资源进行交互。

限制:1.cookie、localstorage、indexDB不能获取;2. ajax请求不能发送;3.DOM无法获得。

ajax 同源、fetch、webSocket 不限制同源、CORS 支持同源、不同源

ie一般默认关闭脚本的,打开试试。

1、通常是语法没有正规写法的关系,像是变数如果是 var 同时出现再 google 会是正确的(Google具有自动修正的引擎),但是 IE 是不会的(比较笨)。用IE断点看一下,应该是有方法不支持IE的,是innerHTML不支持IE的。

2、这是因为Chrome为了安全起见对window.open打开页面的脚本访问做了安全限制,如果window.open打开的子页面与它的父页面(即打开它的那个页面)不在同一个域,则子页面不能访问它的父页面的元素以及脚本,这就是所谓的同源策略了。

3、那就是给你提示文字那些个span分别加一个click方法 当点击提示文字(IE下有效)时让对应的input  focus就是了,当然最好再给提示文字css样式加一个{cursor:text}。请输入密码这样的文字不要放在span里,把span标签也去掉放在input的value请输入密码。