跨域解决方法

跨域

跨域指一个域下的文档或者脚本,去请求另一个域下面的资源。一般应用:

  1. 资源跳转: A链接、重定向、表单提交
  2. 资源嵌入:

    js 实现:

        var script = document.createElement('script');
        script.type = 'text/javascript';
    
        // 传参并指定回调执行函数为showData
        script.src = 'http://api.com/weather.php?callback=showData';
        document.head.appendChild(script);
    
        // 回调执行函数
        function showData(res) {
            console.log(JSON.stringify(res));
        }
    

    postMessage跨域

    postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:

    • 页面和其打开的新窗口的数据传递
    • 多窗口之间消息传递
    • 页面与嵌套的iframe消息传递
    • 上面三个场景的跨域数据传递

    a.html (http://www.domain1.com/a.html)

    
    
    

    b.html(http://www.domain2.com/b.html)

    
    

    CORS(跨域资源共享)

    CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。 实现方式很简单,当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。

    普通跨域请求:只服务端设置Access-Control-Allow-Origin即可,前端无须设置,若要带cookie请求:前后端都需要设置。

你可能感兴趣的:(跨域解决方法)