ajax本身是不可以跨域的,
通过产生一个script标签来实现跨域。因为script标签的src属性是没有跨域的限制的。

其实设置了dataType: 'jsonp'后,$.ajax方法就和ajax XmlHttpRequest没什么关系了,取而代之的则是JSONP协议。JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问。

js代码:

var url = "http://127.0.0.1:8000/test";
        $.ajax({
            type:'get',
            url:url,
            dataType:'jsonp',
            jsonpCallback:'back',
            success:function(msg){
                console.log(msg);
            },
            error:function(){
                alert('访问失败!');
            }
        });

异域服务器端代码:

app.js中:

//跨域测试
app.get('/test',webIndex.tests);
//测试跨域
exports.tests = function(req,res){
    /**设置响应头允许ajax跨域访问**/
    res.setHeader("Access-Control-Allow-Origin","*");
    /*星号表示所有的异域请求都可以接受,*/
    res.setHeader("Access-Control-Allow-Methods","GET,POST");
    var obj = {
        b:'111',
        c:'222'
    }
    res.send("back("+JSON.stringify(obj)+")");
}

结果:

 

posted on 2016-11-22 12:41  浅唱年华1920  阅读(165)  评论(0编辑  收藏  举报