zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    一例智能网卡(mellanox)的网卡故障分析
    jbd2的死锁分析
    一个dcache的性能问题分析
    systemd之导致内核 crash
    开源堡垒机teleport测试
    WSL2添加网络代理,通过宿主机代理出国.
    MongoDB数据库备份操作
    保姆级Mongodb部署教程
    Linux-XZ压缩命令
    eclipse运行Java代码报错:NoClassDefFoundError: javax/xml/bind/*
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/12180403.html
Copyright © 2011-2022 走看看