javascript代码实例教程-跨域和解决跨域问题该如何理解?

发布时间:2018-12-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-跨域和解决跨域问题该如何理解?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

首先我们在研究一个问题的时候要走一定的步骤,这个步骤是固定不变的,比如,跨域问题,首先我们要了解什么是跨域,它是如何产生的?

跨域:DOM策略:禁止对不同源页面DOM进行操作。这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的。XMlHttPRequest同源策略:禁止使用Xhr对象向不同源的服务器地址发起HTTP请求。对于一个普通域来说,协议名,域名,端口号,三者缺一不可,任何一个不一样都会发生跨域,同源策略是为了保证本域名下数据安全提出来的,这是一种比较好的思想,先对反面的全面禁止,然后再给正面访问放出一些口子,是一种处理思路。产生跨域问题后,我们要怎么解决呢,项目中往往会遇到跨域问题,比如我要下载一个后台返回的excel表格,这里会产生跨域。

一、 对于前端来说,解决跨域问题的思路,也很精妙,大家可以联想一下,我们在写项目的时候,通常需要某个线上js文件时,往往会通过script标签引入,这难道不是违反了同源策略吗?是的,按道理是违反了,但是源码中将这个神奇的标签例外了,那就好说了,我们访问其他域名时将域名包在script标签中不就完了,是的,你很聪明,前端解决跨域问题的根本思想就是这样子。

举个例子:

创建一个脚本,并且告诉后端回调函数名叫fun

VAR body = document.getelementsbytagname('body')[0];

var script = document.gerElement('script');

script.tyPE = 'text/javasctipt';

script.src = 'demo.js?callback=fun';

body.appendChild(script);

当然,这个只是一个原理演示,实际情况下,我们需要动态创建这个fun函数,并且在数据返回的时候销毁它,一般我们都会用封装好的jsonp去解决,但是只能通过get请求,不能用post请求。

二、对于后台来说,解决跨域问题,是比较简单的,只需要在域名的header头中加入Access-Control-Allow-Origin: Access-Control-Allow-Credentials:true,我们就可以访问这个域名了,但是安全性肯定降低了。

三、代理,服务器代理真的是万能的,既然跨域是因为域名里面不一致发生的,那我们可以通过新建一个域名去后台访问目标域名获取数据,这样就避开了在dom中获取数据,也能解决这个问题。

总结一下,五中解决办法:

jsonp,

ajax(header('Access-Control-Allow-orgin:https://....'))

window.name+iframe

window.location.hash+iframe

html5 postMessage+ifrme

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-跨域和解决跨域问题该如何理解?全部内容,希望文章能够帮你解决javascript代码实例教程-跨域和解决跨域问题该如何理解?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。