跨域简单demo这是一个关于跨域的简单demo合集。在demo中,我会加入自己的理解,并添加相应的注释。尝试用一个简单的demo来介绍跨域的方法,适合初学者学习跨域。所有demo均使用基于nodeJs的web开发框架Express,需要对nodeJS有一定的了解。不懂nodeJS也没关系。评论会详细解释。如果还有其他没有提到的跨域方法,欢迎PR,谢谢!想要收藏的话,欢迎star。教程不定期更新,欢迎关注订阅。demo介绍了使用node的web框架express在3000端口和3001端口分别开启一个静态服务器,在两个端口之间进行跨域数据传输。配置文件说明。gitattributes配置文件,可以更改这个github项目的语言标签。gitignore配置文件,设置用git上传时忽略哪些文件package.json配置文件,主要针对npminstall、installexpress等模块存在readme.md配置文件,在github上显示和说明项目,也就是你所在的文档现在看设置运行环境node.js全局安装npm全局安装操作步骤gitclonegit@github.com:FatDong1/cross-domaincross-domainnpminstall在跨域目录下,下载项目需要的依赖和进入对应的demo目录,①nodeserverRes.js②重新打开一个dos窗口③nodeserverReq.js或者在对应的demo目录下,在dos窗口输入run.bat,直接完成上面①②③CORS跨域一步到位后的项目运行,请求数据页面地址:http://localhost:3000查看数据:http://localhost:3001JSONP跨域项目运行后,请求页面:http://localhost:3000响应页面为http://localhost:3001postMessagecross-domain这是html5新的API,适用于不同windowiframe之间的跨域项目运行地址:http://localhost:3000window.namecross-domainathttp://localhost:3000/a.html使用js动态生成一个隐藏的iframe,设置src属性为'http://localhost:3001/c.html',加载iframe后,重新设置src属性为同源地址'http://localhost:3000/b.html'(b.html是一个空的html文件),既然iframe和a.html同源了,就可以访问window.name属性,name值不更改,因为window.name属性在不同的页面(即使是不同的域名)加载后仍然存在。项目运行地址:http://localhost:3000/a.htmllocation.hash跨域使用js在http://localhost:3000/a.html动态生成一个隐藏的iframe,设置src属性为'http://localhost:3001/c.html#getdata',判断hash值是否为c.html中的'#getdata',如果为'#getdata',则在当前iframe(c.html)中生成隐藏iframe,其src属性指向'http://localhost:3000/b.html',因为a.html和b.html同源,所以b.html可以修改a.html的hash值,所以那a.html可以通过获取自己的hash值来获取数据项目的运行地址:http://localhost:3000/a.htmldocument.domain跨域document.domain设置为自己或者更高级别的parent域,和主域必须相同。注意!!这是一个托管在我自己的腾讯云域名(xuhaodong.cn)上的demo,很抱歉这个demo无法在本地运行。但是我只是把demo放到了云服务器上,代码没有修改还是一样。在线访问地址:http://a.xuhaodong.cn/a.html如果想在本地运行,需要搭建本地web服务器,参考链接:https://github.com/web2hack/p。..在客户端设置代理跨域,因为JS同源策略是浏览器的安全策略,所以浏览器客户端无法跨域访问,服务端调用HTTP接口只使用HTTPprotocol,不会执行JS脚本,不需要同源策略,不存在交叉问题。简单的说就是浏览器不能跨域,但是后台服务器可以跨域。demo1使用http-proxy-middleware插件设置后端代理,demo2在http://localhost:3000运行,没有使用插件配置代理,直接使用http模块发送一个请求,并在http://localhost:3000运行WebSocket来跨域WebSocket是一种使用ws://(非加密)和wss://(加密)作为协议前缀的通信协议。该协议没有实现同源策略,只要服务器支持,就可以通过它进行跨域通信。项目运行地址:http://localhost:3000/a.html取自GithubFatDong1(https://github.com/FatDong1/c...)
