欢迎访问响应式个人博客!
男生版
女生版
初遇时,她的微笑,她往日的深情、承诺和傻劲,两个人共度的美丽时刻,一一印在回忆里,今天的感情已经比不上从前,但是我爱着恋着往日的她,舍不得离开!
排行
详情
您当前的位置>首页 > 正文
哪有那么多简单的事
2017-10-09 12:11:37   来源:   评论:0 点击:
在页面中使用js访问其他网站的数据时,就会出现跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时,以及hybrid app中请求数据,浏览器会提示一下错误:

cannot load http://你请求的域名. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://当前页的域名' is therefore not allowed access.

二、为什么会出现跨域问题

因为浏览器收到同源策略的限制,当前域名的js只能读取同域下的窗口属性。

同源策略:不同的域名,不同端口,不同的协议不允许共享资源的,保障浏览器安全。

同源策略时针对浏览器设置的门槛。如果绕过浏览就能实现跨域,所以说早期的跨域都是打着安全路数的擦边球,都可以认为是 hack 处理。

三、现在总结一下解决跨域的几种方法

1、jsonp 跨域方法

我们提供一个 标签. 请求页面中的数据, 同时传入一个回调函数的名字。服务器端得到名字后, 拼接函数执行格式的字符串。发送回浏览器。 在下载代码以后并执行, 执行的就是这个函数调用形式的字符串, 因此就将本地函数调用了,同时拿到了从服务器端得到的数据。

2、window.name

window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变。那么我们可以在页面A中用iframe加载其他域的页面B,而页面B中用Java把需要传递的数据赋值给 window.name,iframe加载完成之后,页面A修改iframe的地址,将其变成同域的一个地址,然后就可以读出window.name的值了。这个方式非常适合单向的数据请求,而且协议简单、安全。不会像JSONP那样不做限制地执行外部脚本。

3、document.domain

通过修改document的domain属性,我们可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域,比如 www.a.com和sub.a.com是不同的域,这时,我们无

相关热词搜索:哪有那么多简单的事

上一篇:第一页
下一篇:LTE版Apple Watch Series

收藏