• jsonp 解决同源机制


    跨域问题

    可以跨域的ajax

    原理:

    利用script标签src可以自带跨域。 通过创建一个script标签,并立即删除达到发送请求的效果。  
    因为script标签发送的请求接收的内容会到script标签内部如:
    返回值为func       运行结果为:<script>func</script>
    返回值为func()   运行结果为:<script>func()</script>
    
    都会报错。因为func 会被读取为变量。  怎么样解决呢?我们可以定义一个函数的函数名为func 并且 和后端沟通他的返回值为func()   这样就可以执行func()函数了
    
    伪代码
        $('#btn').click(function () {
            定义一个func函数
            
            创建script 标签
            设置script标签的src为指定的src
            将script标签当在body即可
            删除script标签
            
            返回值沟通为func() 即执行函数
        }
    

    ajax封装的jsonp的方法

        $.ajax({
            url:'http://192.168.40.138:8000/index/',
            type:'get',
            dataType:'jsonp',
            jsonp:'callbacks',	#传函数名的变量,后端request.GET.get('callbacks') 即可接收到函数名
            jsonpcallback:'func'  #自己定义的函数名,可不写。ajax会随机生成
            success:function (data) {
                alert(data)   #如定义函数名则没有回调函数,为自定义。反之则需要写
            }
            
    原理即为伪代码。 这里函数名 为随机生成
    

    后端view代码

    class index(View):
        def get(self,request):
            ret=request.GET.get('callbacks') #获取
            return HttpResponse("%s('111')"%ret)
    
    
  • 相关阅读:
    默认Web字体样式
    从Reddit学到的七条经验
    Git魔法 前言
    26个提升java性能需要注意的地方
    解密Redis持久化
    离开Java,寻找更佳语言的10大理由
    » DebBuilder V2.2.2 测试版发布 Wow! Ubuntu
    YaCy 1.0 发布,自由软件搜索引擎
    Socket 短连接、长连接_YTmarkit的空间_百度空间
    TopHQBooks – PDF 搜索引擎 小众软件
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/12180403.html
Copyright © 2020-2023  润新知