美文网首页
跨域问题的解决方案

跨域问题的解决方案

作者: 探索1者 | 来源:发表于2018-12-12 14:36 被阅读0次

    跨域(Cross Domain)

    什么是跨域

    先来说下 同源策略
    同源:在多个地址中,相同协议,相同域名,相同端口 被视为 "同源"
    HTTP 中,必须是同源地址才能互相发送请求,非同源的请求会被拒绝(<script><img>除外)
    例如:
    http://www.baidu.com/a.htmlhttp://www.baidu.com/page/b.html 就是同源地址
    http://localhost:5000/a.htmlhttp://127.0.0.1/server是 非同源,域名不同

    跨域:非同源的网页,相互发送请求的操作就是跨域操作

    解决方案

    一 通过 <script> 向服务器发送请求
    由服务器资源指定前端页面的哪个方法来执行响应的数据

    实现步骤
    1.前端中想实现跨域操作时,动态创建 script 标记
    var sciprt = document.createElement("script")
    2.为 script 元素设置相应属性
    设置 type 的值为 text/javascript
    设置 src 的值为 请求地址
    3.发送请求
    将创建好的 script 元素追加到网页中即可

    var body = document.getElementsByTagName("body")[0]
    body.append(script)
    

    4.在前端,创建处理数据的响应方法

    function process(data){
        ...
    }
    

    5.在服务器端,响应数据
    特点:指定调用前端的哪个处理方法

    def xxx():
        return "process('xxx')"
    
    jquery 的跨域

    jsop: json with padding
    方案一

    $.ajax({
        url: 'xxx',
        type: 'get/post',
        dataType: 'jsonp', // 指定为跨域访问
        success.function(data){
            // 响应成功后的处理
        } 
    })
    

    方案二

    $.ajax({
        url: 'xxx',
        type: 'get/post',
        dataType: 'jsonp', // 指定为跨域访问
        jsonp: 'huidiao', // 定义 callback 的参数名
        jsonpCallback: 'xx', // 定义jsonp的回调函数名,xx函数需要在外面自己定义
    })
    

    相关文章

      网友评论

          本文标题:跨域问题的解决方案

          本文链接:https://www.haomeiwen.com/subject/heeuhqtx.html