• jsonp跨站请求


    本地端

    url:

    url(r'req/',a2.req),

    commons.js

    alert(123);

    views.py

    from django.shortcuts import render
    import requests
    # Create your views here.
    def req(request):
        response=requests.get('http://www.weather.com.cn/data/cityinfo/101010100.html')
        print(response.content) #字节类型
        response.encoding='utf-8'
        print(response.text)  #字符串类型
        print(response.cookies,response.headers,)
        return render(request,'req.html',{'result':response.text})

    本地前端

    req.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    {#    <script src="/static/commons.js"></script>#}
    {#    <script src='http://127.0.0.1:8001/jsonp/?k1=v1&k2=v2'></script>#}
    {#    <script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"></script>#}
    </head>
    <body>
        <h1>后台获取的结果</h1>
            {{ result }}
        <h1>js直接获取结果</h1>
        <input type="button" value="获取数据" onclick="getContent();">
        <div id="container_1"></div>
            <script src="/static/jquery-1.12.4.js"></script>
            <script>
                function getContent() {
                     /*
                    var xhr=new XMLHttpRequest();

                    {#                xhr.open("GET",'http://www.weather.com.cn/data/cityinfo/101010100.html')#}

                    xhr.open("GET",'http://127.0.0.1:8001/jsonp.html?k1=v1&k2=v2');
                    xhr.onreadystatechange=function () {
                      console.log(xhr.responseText);//拿到返回的文本信息
                    };
                    xhr.send()
                    */
                    /*
                    var tag=document.createElement('script');
    {#                tag.src='http://127.0.0.1:8001/jsonp/?callback=pe&k1=v1&k2=v2';#}

                    tag.src='http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403';
                    document.head.appendChild(tag);
                    document.head.removeChild(tag);
                }
                function list(arg) {
                    console.log(arg);
                }
                 */
                $.ajax({
                    url:'http://www.jxntv.cn/data/jmd-jxtv2.html?_=1454376870403',
                    type:'POST',
                    dataType: 'jsonp',
                    jsonp: 'callback',
                    jsonpCallback: 'list'
                });
                }
                function list(arg) {
                    console.log(arg);
                }
            </script>
    </body>
    </html>

    远程端

    url

    url(r'jsonp/',views.jsonp),

    views.py

    def jsonp(request):
        func=request.GET.get('callback')
        content='%s(1000)'%(func,)
        return HttpResponse(content)

        # print(request.GET)
        # return HttpResponse('alert("21")')

     

    笔记:

    由于浏览器具有同源策略(阻止ajax请求,无法阻止<script src='---'></script>)
    要取外面网站数据怎么办:


    --创建script标签
    --src=远程地址
    --远程地址返回的内容能拿到 必须符合javacript格式

    以?号浏览器url获取是get方式获取数据


    jsonp只能发get请求

     

  • 相关阅读:
    大屏展示功能
    单例模式/原型模式
    .net core ioc
    Log4net
    mvc 过滤器
    webservice
    页面传值 作用域
    Map使用方法
    java获取当前时间撮
    linux 下统计文本行数的各种方法(一)
  • 原文地址:https://www.cnblogs.com/leiwenbin627/p/11152697.html
Copyright © 2020-2023  润新知