解决Ajax跨域问题:Origin xx is not allowed by Access-Control-Allow-Origin.

今天一个Ajax跨域问题,代码如下:
<html>
<head>
    <title>title</title>
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script>
        $.ajax({
            url:"http://map.yanue.net/gpsApi.PHP?lat=22.502412986242&lng=113.93832783228",type:'GET',success: function(data){
                $('body').append( "Name: " + data );
            }
        });
    </script>
</head>
<body>
    测试Ajax跨域问题
</body>
</html>

没有结果,chrome用F12 下查看错误 得知: XMLHttpRequest cannot load http://map.yanue.net/gpsApi.PHP?lat=22.502412986242&lng=113.93832783228. Origin http://localhost is not allowed by Access-Control-Allow-Origin. AJAX跨域问题产生。

什么引起了ajax不能跨域请求的问题?

ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。



解决方案如下:
一、使用jsonp格式, 如jquery中ajax请求参数 dataType:'JSONP'
<html>
<head>
    <title>title</title>
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script>
        $.ajax({
            url:"http://map.yanue.net/gpsApi.PHP?lat=22.502412986242&lng=113.93832783228",dataType:'JSONP',success: function(data){
                $('body').append( "Name: " + data );
            }
        });
    </script>
</head>
<body>
测试Ajax跨域问题
</body>
</html>


二、server端加上header设为 Access-Control-Allow-Origin:*
header("Access-Control-Allow-Origin: *"); # 跨域处理
问题就解决了。

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...