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. 『无为则无心』Python基础 — 42、Python中文件的读写操作(二)

    目录 (5)文件对象方法(重点) 1)写方法 2)读方法 3)seek()方法 4)tell()方法 (6)关闭 (7)综合练习:读取大文件 (5)文件对象方法(重点) 1)写方法 @1.语法 对象对 ...

  2. uni微信小程序优化,几行代码就能省100kb的主包空间?

    不是标题党,我们公司的项目确确实实是省下了100kb的主包空间,而且还是在没有牺牲任何的性能和业务的前提下实现的. 但是100kb是根据项目大小,所以你用这个插件可能省下超过100kb或者更少. 直接 ...

  3. Maven仓库的目录结构

    _remote.repositories文件 本地库中的包都有一个_remote.repositories文件,示例: #NOTE: This is an Aether internal implem ...

  4. js中数组的添加和移除

    1.引入js文件 <script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>2.HTML中代 ...

  5. 为什么C语言Scanf函数对字符串不要加 取地址运算符&

    原文1:http://www.360doc.com/content/16/0515/11/19455598_559288667.shtml 原文2:https://zhidao.baidu.com/q ...

  6. centOS 强制卸载PHP

    centOS上的php过低是需要重新安装时,不得不卸载自定义安装,如下操作 查看php版本命令: #php -v 这个命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #p ...

  7. vue+element ui中select组件选择失效问题原因与解决方法

    codejing 2020-07-10 09:13:31  652  收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...

  8. TCP连接的状态转换图深度剖析

    转载请注明来源:https://www.cnblogs.com/hookjc/ 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示. (1)第一次握手:建立连接时 ...

  9. sql作业题

    作业题:1.查询选修课程'3-105'且成绩在60到80之间的所有记录.注释:用于指定某个范围使用between and,也可以使用and连接符;答案:法1:select * from sc wher ...

  10. 交换机基本原理与VRP基础及操作

    交换机基本原理与VRP基础及操作 目录 交换机基本原理与VRP基础及操作 一.数据链路层 1.数据链路层的位置 2.数据链路层的功能 二.以太网(Ethernet) 1.以太网的概念 2.MAC地址( ...