iframe和伪造ajax

1.iframe标签

  • <iframe>标签是一个内联框架,即用来在当前HTML页面中嵌入另一个文档的,且所有主流浏览器都支持iframe标签。

1.1基本用法

<iframe src="地址、或者html文件">
</iframe>
  • 示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>Hello World</h2>
<iframe width="80%" height="300px" src="https://www.bilibili.com/"></iframe>
</body>
</html>

1.2多个嵌套

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>Hello World</h2>
<iframe width="80%" height="300px" src="https://www.bilibili.com/"></iframe>
<iframe width="80%" height="300px" src="https://music.163.com/"></iframe>
<!-- HTML文件 -->
<iframe width="80%" height="300px" src="index.html"></iframe>
</body>
</html>
  • 有的网站由于存在安全机制的问题不能够直接使用iframe标签进行访问;

  • 多个嵌套也可以结合Pyecharts的图表构建简单的可视化大屏;

2.结合Form表单

2.1 Form表单的提交方式

  • 原生方式提交,<input type="submit" value="提交" />

  • 使用js提交

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <h2>Hello World</h2>
    <form id="f1" method="post" action="">
    {% csrf_token %}
    用户名:
    <input name="name" id="name" />
    <button id="btn" onclick="submitForm();">提交</button>
    </form>
    <script>
    //JS提交form表单
    function submitForm(){
    document.getElementById("f1").submit();
    }
    </script>
    </body>
    </html>
  • 经实验发先两种提交方式均会跳转界面;因此我们可以借助iframe标签实现form表单的提交

2.2 iframe伪造Ajax

  • 步骤:
    • 1.添加<iframe>标签,并添加idname,为了在界面上显示的不突兀,我们使用css将iframe标签进行隐藏;
    • 2.在form标签中添加target=“iframe的name”
    • 3.使用js进行数据的发送
  • 提交后后台已经能够接收到数据;

2.3 接收返回值

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>Hello World</h2>
<!--
<iframe width="80%" height="300px" src="https://www.bilibili.com/"></iframe>
<iframe width="80%" height="300px" src="https://music.163.com/"></iframe>
<iframe width="80%" height="300px" src="index.html"></iframe>
-->
<form id="f1" method="post" action="" target="ifr1">
{% csrf_token %}
用户名:
<input name="name" id="name" />
<button id="btn" onclick="submitForm();">提交</button>
</form>
<iframe name="ifr1" id="ifr" style="display: none"></iframe>
<script>
function submitForm(){
//获取内容
document.getElementById("ifr").onload=loadIframe;//注意不要写括号;或者可以将iframe标签放在最底部因为loadIframe标签加载时可能iframe标签未加载
document.getElementById("f1").submit();
}
function loadIframe(){
var content=document.getElementById("ifr").contentWindow.document.body.innerText;
//contentWindow获得iframe的对象,包含document;
//onload每次接收到请求都会重新加载一次
alert(content);
}
</script>
</body>
</html>

3.补充:django中通过iframe

  • 参考文献:https://blog.csdn.net/weixin_42886895/article/details/88970578

  • django的老版本可能不会有这个问题;返回HttpResponse的时候会遇到拒绝连接的情况

  • 目前我使用的django==3.2.5的版本

  • from django.views.decorators.clickjacking import xframe_options_exempt
    @xframe_options_exempt
    def autohome(request):
    if request.method=="GET":
    return render(request,'autohome.html')
    else:
    name=request.POST.get("name")
    print(name)
    return HttpResponse("123")
  • 使用装饰器啊修饰过后仅,改函数可以正常的返回iframe的信息;如果需要设置全部或者更详细的操作请参考参考文献;

继续努力,终成大器;

iframe和伪造ajax的更多相关文章

  1. 每日学习——iframe标签伪造ajax

    刚开始学习ajax,好难,看不懂啊看不懂. 伪造ajax加载网页 <!DOCTYPE html> <html> <head lang="en"> ...

  2. 第二百七十二节,Tornado框架-iframe标签框架伪造ajax

    Tornado框架-iframe标签框架伪造ajax html <!DOCTYPE html> <html> <head lang="en"> ...

  3. 利用jquery+iframe做一个ajax上传效果

    以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...

  4. iframe实现伪ajax

    iframe实现伪ajax 数据提交的两种方式: Form Ajax Ajax提交数据的方法: JS实现 Jquery “伪”Ajax "伪"Ajax: iframe+from实现 ...

  5. iframe伪造ajax

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 跨站请求伪造 | ajax

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

  7. form表单利用iframe高仿ajax

    html代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  8. Ajax-02 iframe实现伪“Ajax”

    需求: 用户输入URL,使用iframe将目标URL的内容加载到页面指定位置(局部刷新) <!DOCTYPE html> <html lang="en"> ...

  9. Python 20 Ajax全套

    概述 对于web应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...

随机推荐

  1. Java语法专题2: 类变量的初始化顺序

    合集目录 Java语法专题2: 类变量的初始化顺序 问题 这也是Java面试中出镜率很高的基础概念问题 描述一下多级继承中字段初始化顺序 描述一下多级继承中类变量初始化顺序 写出运行以下代码时的控制台 ...

  2. python 小兵(10)内置函数

    内置函数(下午讲解) 什么是内置函数?就是python帮我们提供的一个工具,拿过直接用就行,比如我们的print,input,type,id等等.截止到python3.6.2版本 中一共提供了68个内 ...

  3. halcon视觉入门钢珠识别

    halcon视觉入门钢珠识别 经过入门篇,我们有了基础的视觉识别知识.现在加以应用. 有如下图片: 我们需要识别图片中比较明亮的中间区域,有黑色的钢珠,我们需要知道他的位置和面积. 分析如何识别 编写 ...

  4. 使用estimatedRowHeight的优缺点

    使用estimatedRowHeight的优缺点 1.优点 1> 可以降低tableView:heightForRowAtIndexPath:方法的调用频率 2> 将[计算cell高度的操 ...

  5. cross-env 作用

    是什么 运行跨平台设置和使用环境变量的脚本 出现原因 当您使用NODE_ENV =production, 来设置环境变量时,大多数Windows命令提示将会阻塞(报错). (异常是Windows上的B ...

  6. 用Dockerfile部署zabbix

    用Dockerfile部署 zabbix-server部署阶段 要用docker跑zabbix-server,需要以下几个组件 组件名称 作用 数据库 MySQL或是PostgreSQL Zabbix ...

  7. 使用python实现冒泡排序和快速排序

    1 def bubble(arr): 2 """冒泡排序""" 3 loop = len(arr) - 1 4 if loop > 0 ...

  8. SpringBoot源码解读系列三——引导注解

    我们再来看下SpringBoot应用的启动类: 查看代码 import org.springframework.boot.SpringApplication; import org.springfra ...

  9. 已完成的python项目-环境离线部署

    python环境离线部署 当前生产环境中,有很多基于python开发的工具需要使用. 由于python工具往往涉及到很多依赖,在线状态下,可以通过pip requirements来管理安装. 但有时候 ...

  10. 栈(stack)、递归(八皇后问题)、排序算法分类,时间和空间复杂度简介

    一.栈的介绍: 1)栈的英文为(stack)2)栈是一个先入后出(FILO-First In Last Out)的有序列表.3)栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的 ...