ajax跨域请求问题的五种解决方案

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(当然,这里使用有点大材小用)

你可能感兴趣的:(ajax跨域请求问题的五种解决方案)