核心提示:什么是ajax跨域问题?现在的java开发都是偏向前后台分离,前台就会有调用后台接口的应用场景,只要前台和后台不在同一个域时,就会产生跨域问题。ajax跨域问题的五种解决方案:方案一: 使用跨域资源共...
什么是ajax跨域问题?
现在的java开发都是偏向前后台分离,前台就会有调用后台接口的应用场景,只要前台和后台不在同一个域时,就会产生跨域问题。
ajax跨域问题的五种解决方案:
方案一: 使用跨域资源共享代理(corsproxy)
方式一: 安装node.js客户端 方式二: 在要访问的真实路径前加上www.corsproxy.com 即通过代理的方式来实现跨域访问, 但是不适合高并发和高可用的应用情景
方案二: 使用jsonp
原理: ajax不能跨域请求但是JavaScript可以跨域访问, 因此可以把要返回的json格式的数据包装到js函数中, 然后在页面中定义该函数即可显示 实现: 在ajax的请求中将dataType定义为"jsonp"
方案三: 使用XmlHttpRequest
原理: 其实XmlHttpRequest是ajax的底层实现 实现: 首先,新建一个XMLHttpRequest的实例。 var xhr = new XMLHttpRequest(); 然后,向远程主机发出一个HTTP请求。 xhr.open('GET', 'example.php'); xhr.send(); 接着,就等待远程主机做出回应。这时需要监控XMLHttpRequest对象的状态变化,指定回调函数。 xhr.onreadystatechange = function(){ if ( xhr.readyState == 4 && xhr.status == 200 ) { alert( xhr.responseText ); } else { alert( xhr.statusText ); } };
方案四: 使用httpclient
httpclient是一个可以接收和发送http请求的工具包, 里面的doGet和doPost可以满足我们常见的需求, 同时还可以选择带参数或者不带参数
方案五:使用阿里巴巴的Dubbo分布式服务框架
dubbo是分布式服务框架, 阿里巴巴soa服务化治理方案的核心框架(现已停止更新) 该框架采用生产者--消费者模型 执行流程: 1、在服务容器加载的时候, 运行服务的生产者 2、服务生产者在启动的时候,向简易注册中心注册自己能提供的服务 3、消费者在启动的时候,向注册中心订阅自己需要的服务 4、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者 5、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用 6、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心 备注: 简易注册中心一般使用zookeeper(当然,这里使用有点大材小用)