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. List<Integer>里有可能存String类型元素吗?

    这其实是我遇到的一个线上bug,在这里分享给大家. 如果是用反射,那就很简单了,毕竟泛型只是在编译期进行约束,对运行期是无能为力的. 想想看,如果不使用反射,有没有办法做到呢? 问题起因 在我们公司的 ...

  2. Stream流的基本介绍以及在工作中的常用操作(去重、排序以及数学运算等)

    平时工作中,我在处理集合的时候,总是会用到各种流操作,但是往往在处理一些较为复杂的集合时,还是会出现无法灵活运用api的场景,这篇文章的目的,主要是为介绍一些工作中使用流时的常用操作,例如去重.排序和 ...

  3. Atcoder ARC-070

    A 可以发现的是,次数的下界一定是使得 \(\frac{n(n + 1)}{2} \ge X\) 最小的 \(n\). 稍加思考可以发现,只需要在某一时刻停一下一定能在下界的次数内跳到恰好 \(X\) ...

  4. js 保护网站

    转载请注明来源:https://www.cnblogs.com/hookjc/ <!--禁止鼠标右键代码--><noscript><iframe src=*.html&g ...

  5. PHP版的猴子选大王算法

    猴子选大王 这个算法可能是目前我看到的最简洁都算法吧,而且很好理解.它不同于其他算法,其他算法都是判断这个猴子能不能被选中,而他只是找出不能被选中的猴子,然后将其塞到数组模拟的环状队列中,参与下次选. ...

  6. Centos 7 下部署Django + uWSGI + Nginx

    1.废话 之前利用Django写了些测试工具,一直是直接 python manage.py runserver 8081这么来用的.用户量不大,倒也不影响什么.uWSGI+Nginx的性能肯定要好,s ...

  7. shell——wait与多进程并发

    在脚本里用&后台打开多个子进程,用wait命令可以使这些子进程并行执行. 例1: fun1(){ while true do echo 1 sleep 1 done } fun2(){ whi ...

  8. linux_12

    一.主从复制及主主复制的实现 主从复制 master配置 # yum -y install mysql-server # systemctl enable --now # vim /etc/my.cn ...

  9. BumbleBee: 如丝般顺滑构建、交付和运行 eBPF 程序

    本文地址:https://www.ebpf.top/post/bumblebee 1. 前言 不久前,Solo.io 公司在官网博客宣布了开源了一个名称为 BumbleBee 的新项目.该项目专注于简 ...

  10. pycharm工具使用

    转自: https://blog.csdn.net/u014044812/article/details/78727496   因公司的需求,需要做一个爬取最近上映的电影.列车号.航班号.机场.车站等 ...