码迷,mamicode.com
首页 > 其他好文 > 详细

跨域请求的两种实现方式

时间:2018-10-28 17:54:04      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:cti   name   callbacks   跨域请求   back   -o   control   access   port   

Jsonp

域1

index.html

<script>
        $(".get-service").click(function () {
            $.ajax({
                url: "http://127.0.0.1:8005/service/",
                type: "get",
                dataType: "jsonp",
                jsonp: "callbacks",         // 伪造ajax, 基于script
                // jsonpCallback: "alex",   // 不写的话,默认是随机字符串
                success: function (data) {
                    console.log("//", data, typeof data);
                    data = JSON.parse(data);
                    console.log("//", data, typeof data);
                }
            })
        });
</script>

域2

被请求的域

views.py

def service(request):           # jsonp
    data = {"name": "sun", "age": 28}
    import json
    data = json.dumps(data)     # 序列化
    func = request.GET.get("callbacks")
    return HttpResponse("%s(‘%s‘)" % (func, data))

cors

域1

index.html

<script>
    $(".get-service").click(function () {
        $.ajax({
            url: "http://127.0.0.1:8005/service/",
            data: {},
            success: function (data) {
                console.log(data);
                data = JSON.parse(data);
                console.log(data);
            }
        });

    });
</script>

域2

被请求的域

views.py

def service(request):           # cors版本
    data = {"name": "sun", "age": 28}
    import json
    data = json.dumps(data)     # 序列化
    response = HttpResponse(data)
    response["Access-Control-Allow-Origin"] = "http://127.0.0.1:8004"    #*的话代码所有的ip地址都可以向本域跨域
    return response

 

跨域请求的两种实现方式

标签:cti   name   callbacks   跨域请求   back   -o   control   access   port   

原文地址:https://www.cnblogs.com/sunch/p/9866102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!