本地端

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请求

jsonp跨站请求的更多相关文章

  1. 详解 JSONP跨域请求的实现

          跨域问题是由于浏览器为了防止CSRF攻击(Cross-site request forgery跨站请求伪造),避免恶意攻击而带来的风险而采取的同源策略限制.当一个页面中使用XMLHTTPR ...

  2. CSRF 跨站请求伪造学习笔记

    参考文章: 漏洞挖掘之CSRF CSRF花式绕过Referer技巧 What-是什么 CSRF(Cross-site request forgery)跨站请求伪造.攻击者通过构造特殊链接或者页面,盗用 ...

  3. Web安全相关(二):跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

  4. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  5. 跨站请求伪造 CSRF / XSRF<一:介绍>

    跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一 ...

  6. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  7. csrf跨站请求伪造

    如何杜绝跨站请求伪造? 1.要让服务器知道本次请求是不是冒用了用户的身份→ 2.服务器发给用户一个凭证,用户请求时需携带此凭证→ 3.此凭证只能用户看到而且冒用者看不到→ 4.这就用到了浏览器的安全机 ...

  8. Web安全测试之跨站请求伪造(CSRF)篇

    跨站请求伪造(即CSRF)被Web安全界称为诸多漏洞中“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑.本文将简单介绍该漏洞,并详细说明造成这种漏洞的原因所在,以及针对该漏洞的黑盒测试与灰盒子测试具体 ...

  9. django的跨站请求访问

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  10. .net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

    1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.We ...

随机推荐

  1. Word中接入大模型教程

    前言 为什么要在word中接入大模型呢? 个人觉得最大的意义就是不用来回切换与复制粘贴了吧. 今天分享一下昨天实践的在word中接入大模型的教程. 在word中接入大模型最简单的方式就是使用vba. ...

  2. vue+elementUI当渲染文本超出一定字数时显示省略号

    如图,当渲染的文字超出30字后显示省略号 1.设置过滤器 filters: { ellipsis(value) { if (!value) return ""; if (value ...

  3. 盒马新零售基于DataWorks搭建数据中台的实践(转载自阿里云的计算平台负责人--许日花名欢伯)

    简介:大家好,我叫许日花名欢伯,在2016年盒马早期的时候,我就转到了盒马的事业部作为在线数据平台的研发负责人,现在阿里云的计算平台负责DataWorks的建模引擎团队.今天的分享内容也来源于另一位嘉 ...

  4. luogu-P10596题解

    简要题意 一个有 \(N\) 个元素的集合有 \(2N\) 个不同子集(包含空集),现在要在这 \(2N\) 个集合中取出若干集合(至少一个),使得它们的交集的元素个数为 \(K\),求取法的方案数, ...

  5. sql 周岁计算

    select  FLOOR(DATEDIFF(DY, substring(身份证字段,7,4), GETDATE()) / 365.25)  age  from [表名]

  6. 理解Rust引用及其生命周期标识(上)

    写在前面 作为Rust开发者,你是否还没有完全理解引用及其生命周期?是否处于教程一看就会,但在实际开发过程中不知所措?本文将由浅入深,手把手教你彻底理解Rust引用与生命周期. 关于本文的理解门槛 本 ...

  7. 【Python】转载一个python 爬虫的帖子

    原帖地址 原帖标题:爬取图网的4K图片自动保存本地 https://www.52pojie.cn/thread-1809600-1-1.html (出处: 吾爱破解论坛) python 代码 impo ...

  8. stat() "/root/xxx/index.html" failed (13: Permission denied)

    前言 在 nginx 上部署静态网页报502,于是查看 nginx 错误日志 error_log /var/log/nginx/error.log;,却没有看到任何错误信息:访问 nginx活动日志 ...

  9. mac强制关闭程序

    使用快捷键:Command+Option+Esc 来打开"强制退出应用程序"的窗口,然后选中你需要退出的程序,再点右下方的"强制退出"即可.

  10. Delphi 让窗体自适应屏幕显示

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...