Ajax实现跨域

同源策略

所谓同源是指,域名,协议,端口相同。
当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面
当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。
如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

浏览器的同源策略为:当你用ajax发请求时,若请求的地址不同源,则不能访问。此为浏览器的一个安全机制。

JSONP的思路

使用ajax虽然不能直接访问请求的url路径,但是可以引用非同源的js,css等一般情况下具有src属性的标签。

    function submit_Jsonp_cross_domain() {
        var tag = document.createElement('script');
        //下面这句话返回一个HTTP__RESPONSE字符串
        //返回fuck("arg"),正好调用下面的参数 
        tag.src = 'http://localhost:9191/cross_domain';
        document.head.appendChild(tag);
        document.head.removeChild(tag);
    }
    function fuck(arg) {
            alert(arg)
    }

注意一下:

  • 也可以在ajax的请求后面添加参数,告诉被请求的URL这就是我想要的回调函数的名字

用jQuery实现

function submitJsonp4() {
    $.ajax({
        url: 'http://127.0.0.1:9000/xiaokai.html',
        type: 'POST',
        dataType: 'jsonp',
        jsonp: 'callback',
        jsonpCallback: 'func'
    })
}
function func(arg) {
    console.log(arg);
}

小江总结:

  • 标志这个请求和别的请求不一样,dataTypejsonP
  • jsonp的请求参数要设置一下啊,jsonpcallback
  • 回调函数的名字: func, 在本地执行的

你可能感兴趣的:(Ajax实现跨域)