前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iframe跨域应用 - 使用iframe提交表单数据

iframe跨域应用 - 使用iframe提交表单数据

作者头像
HTML5学堂
发布于 2018-03-12 10:03:39
发布于 2018-03-12 10:03:39
5.4K00
代码可运行
举报
文章被收录于专栏:HTML5学堂HTML5学堂
运行总次数:0
代码可运行

之前我们提到了iframe跨域,今天我们在原有的基础之上进行“实例”的讲解。通过iframe跨域实现表单数据的提交。如果想了解iframe跨域,可以发送“iframe跨域”到“HTML5学堂”公众号。

为何提交数据还要跨域?

在使用iframe跨域之前,可能你的脑海中就出现了这样一个问题:为何提交表单数据还需要跨域呢?

首先我们要知道,网站的数据是存放在服务器上的,而当一个网站很大型,拥有很多的数据时,通常会进行分类,然后将不同类的内容放置在不同的子域名中。

表单数据的提交模式

今天会使用到MD5的知识,因此我们先来解释一下这个概念,再进入到我们的实例当中。

出于安全方面的考虑,互联网使用了各类加密机制针对用户的信息进行加密处理。而MD5就是加密方式中的一种。

注册时:会获取到当前表单内容,之后进行MD5加密,最后再数据库中保存处理后的密码。即:

——> 表单中输入内容

——> MD5加密

——> 数据库存储

登录时:获取输入的内容,之后进行MD5加密,然后将加密后的内容与数据库中存储的内容进行比较。即:

——> 表单中输入内容

——> MD5加密

——> 比对数据库存储的密码

换言之,出于安全性考虑,在数据库中其实并不会存储我们原始密码,这些信息都经过了转码(MD5就是其中一种加密算法)。我们是通过比较“注册时转码后数据”和“登录时转码后数据”来确定是否成功登录。

另外,利利请教了一下HTML5学堂的好朋友“崔哥哥”,了解了一下MD5加密机制,在此提醒各位:请不要使用纯字母、纯数字或字母+数字的方式设置密码,这种密码设置通过MD5生成出来的密码都比较类似,最好的一种设置密码方式是:数字+字母+特殊字符。

虽然,工程师们会进行各种加密处理,也会考虑到预防密码破解的问题(如:使用MD5加密数据之后再次使用MD5加密,从而让结果变得更为复杂,提升密码的破解难度)。但是作为用户的我们,也尽可能的避免掉一些问题吧~

iframe提交表单数据

说完了前面的需要了解的东西,我们进入iframe的实例操作吧~!

功能需求

在http://A.h5course.com中,进行用户的注册(填写表单),需要将数据提交到http://B.h5course.com的addUser.php中。此时即是需要从A域发送数据到B域。

实现流程,在A域中的a.html创建iframe标签,iframe标签的内容是B域中的b.html,之后通过a.html控制b.html去申请B域中的addUser.php文件

功能实现的基本流程

1 构建基本的结构样式

2 引入需要依赖的JS文件

3 定义动态创建iframe标签的功能函数

4 获取表单数据并序列化、加密处理

5 通过AJAX发送请求,完成跨域

代码书写位置

我们依旧在A域当中进行代码书写

第一步 A域中的结构代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>HTML5学堂 A域中的a.html</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css" />
</head>
<body>
    <div class="wrap">
        <form action="" name="postframe">
            <label for="user">用户名:</label><input type="text" name="username" id="user"/>
            <label for="pass">密码:</label><input type="password" name="password" id="pass"/>
            <span>提交数据</span>
        </form>
    </div>
</body>
</html>

第二步 引入需要依赖的JS文件

在开发层面来说,我们此处使用jQuery框架,另外由于需要进行密码加密,因此我们还需要引入md5.js

引入代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="js/md5.js" type="text/javascript"></script>

第三步 定义“动态创建iframe标签”的功能函数

JS代码如下(对于这个步骤中的详细介绍,我们之前的文章中已经做了详细的解释,想要了解的可以发送“iframe跨域”到“HTML5学堂”公众号)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var iframeJquery = null;


function addIframe(callback) {
    var newIframe = '<iframe id="newframe" src="http://B.h5course.com/b.html" name="postframe" style="width:0; height:0;position:absolute;left:-9999px;top:0;" />';
    document.domain = "h5course.com";
    $('body').append(newIframe);
    $('#newframe').on('load', function() {
        iframeJquery = $('#newframe')[0].contentWindow.$;
        callback && callback();
    });
}

第四步 获取表单数据并进行表单数据序列化

在点击按钮时,我们需要获取表单数据并进行表单数据序列化,之后对数据进行md5加密。具体代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('.wrap span').click(function() {
    // 序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据
    var userdata = $('form').serializeArray();
    // 对密码进行md5加密
    var passowrd = (userdata[1].value).MD5().toLowerCase();
    // 将序列化后的密码修改为加密后的密码
    userdata[1].value = passowrd;
});

第五步 通过AJAX发送请求

当处理完成表单数据之后,我们需要将当前的数据通过AJAX,发送到B域当中的addUser.php当中,进行用户数据的存储。

注意:由于涉及到了密码等私密性信息,因此需要使用post的提交方法。

注意:当使用post进行数据提交时,并不能够通过url传递数据,所有需要传递的数据均需要通过data进行发送

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 通过AJAX,把数据提交到数据库
addIframe(function() {
    iframeJquery.ajax({
        url: 'http://B.h5course.com/addUser.php',
        type: 'POST',
        data: userdata,
        success: function(data) {
            console.log(data);
        }
    });
});

完整版代码

最后我们一起来看一下完整版的JS代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var iframeJquery = null;


function addIframe(callback) {
    var newIframe = '<iframe id="newframe" src="http://B.h5course.com/b.html" name="postframe" style="width:0; height:0;position:absolute;left:-9999px;top:0;" />';
    document.domain = "h5course.com";
    $('body').append(newIframe);
    $('#newframe').on('load', function() {
        iframeJquery = $('#newframe')[0].contentWindow.$;
        callback && callback();
    });
}
$('.wrap span').click(function() {
    // 序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据
    var userdata = $('form').serializeArray();
    // 对密码进行md5加密
    var passowrd = (userdata[1].value).MD5().toLowerCase();
    // 将序列化后的密码修改为加密后的密码
    userdata[1].value = passowrd;
    // 通过AJAX,把数据提交到数据库
    addIframe(function() {
        iframeJquery.ajax({
            url: 'http://B.h5course.com/addUser.php',
            type: 'POST',
            data: userdata,
            success: function(data) {
                console.log(data);
            }
        });
    });
});

PS:关于MD5.js,如果需要下载请前往:https://github.com/iceswan/JStools

HTML5小编-利利&堡堡 耗时6h

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 懂点君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
js中几种实用的跨域方法原理详解
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
jack.yang
2025/04/05
510
js中几种实用的跨域方法原理详解
【Web技术】424- 那些年曾谈起的跨域
对于前端开发来说跨域应该是最不陌生的问题了,无论是开发过程中还是在面试过程中都是一个经常遇到的一个问题,在开发过程中遇到这个问题的话一般都是找后端同学去解决,以至于很多人都忽略了对跨域的认识。为什么会导致跨域?遇到跨域又怎么去解决呢?本文会对这些问题一一的介绍。
pingan8787
2019/11/30
5880
postMessage与postMessage跨域
HTML5学堂今日postMessage跨域教学流程 先为大家讲解postMessage的基本知识 之后,我们书写一个实例:使用静态的iframe,实现A域前端页面与B域前端页面之间的数据传递 最后,我们使用JS动态的生成iframe,实现A域的前端页面与B域的前端页面“互通”,并在B域中使用AJAX申请B域的后台数据 1 postMessage通信的方法与事件 postMessage的跨域方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。 想要完成“一个域”与“另
HTML5学堂
2018/03/13
3.1K0
postMessage与postMessage跨域
深入剖析iframe跨域问题
HTML5学堂:本文当中我们介绍了跨域的基本知识,讲解到了跨域的相关种类,并讲解了解决跨域中的一种方法——如何使用iframe跨域。讲解了iframe跨域的基本原理与流程,并配以实战~ 利利的独白:跨域,是我们的课程中必不可少的一部分,但是我们一直都是在讲解JSONP的跨域方式,虽然也提到了iframe的跨域方式,但是由于时间因素,并没有办法放置到课程中。 本文仅仅讲明了iframe的跨域问题,想了解更多关于iframe标签的基本知识,直接发送 “iframe标签” 到 “HTML5学堂” 的微信。 什么是
HTML5学堂
2018/03/12
14.6K0
深入剖析iframe跨域问题
web跨域解决方案
阅读目录 什么是跨域 常用的几种跨域处理方法: 跨域的原理解析及实现方法 总结 摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识,走起。 什么是跨域     在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。   JavaScript这个安全策
hbbliyong
2018/03/06
2.8K0
web跨域解决方案
一文带你了解跨域的前因后果和解决方案
在了解跨域之前,我们必须要了解一下同源策略。 跨域问题其实就是浏览器的同源策略造成的。
用户6297767
2023/12/23
3930
一文带你了解跨域的前因后果和解决方案
九种实用的前端跨域处理方案(转载非原创)
转载来源:https://www.cnblogs.com/ypSharing/p/corsHanlder.html
xlj
2021/09/20
1.5K0
【JS应用】Iframe 解决跨域
跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式
神仙朱
2019/11/07
15.7K0
【JS应用】Iframe 解决跨域
详析JSONP跨域
关于跨域这个问题也是大家工作中经常遇到的问题,之前给大家讲解了跨域的基本知识以及如何使用iframe跨域,如果想具体了解iframe跨域可以点击:深入剖析iframe跨域问题。本文主要讲解JSONP的原理,以及JSONP的实际应用。 JSONP的详析流程: 1 什么是JSONP 2 JSONP的原理与实现流程 2.1 JSONP跨域流程 2.2 相关提示 3 JSONP的实例 - 辅助理解JSONP流程 3.1 JSONP跨域实例 - 前端的JS代码 3.2 JSONP跨域实例 - 后台的PHP代码 3.3
HTML5学堂
2018/03/13
1.9K0
详析JSONP跨域
什么是跨域?解决方案有哪些?
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
用户1093975
2018/08/03
15.2K0
什么是跨域?解决方案有哪些?
你真的了解跨域吗
相信每个前端对于跨域这两个字都不会陌生,在实际项目中应用也很多,但跨域方法的多种多样让人目不暇接,前段时间公司同事出现了跨域问题,又一时找不到问题所在,所以在此总结下跨域知识,一篇由浅入深的万字Web基操文
isboyjc
2022/03/28
2.4K0
你真的了解跨域吗
聊聊几种去Flash改造方案
Web技术飞速发展的如今,我们在感受新技术带来的便捷和喜悦的同时,也时常在考虑着一个问题:老技术如何迁移。
MarsBoy
2018/07/17
1.9K0
什么是跨域及怎么解决跨域问题?[通俗易懂]
这篇博文解释的挺清楚,我直接引用 什么是跨域?怎么解决跨域问题?_L瑜-CSDN博客_跨域是什么意思
全栈程序员站长
2022/08/11
12.9K0
什么是跨域及怎么解决跨域问题?[通俗易懂]
跨域请求的常用方式及解释
同源策略 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个域加载的脚本去获取另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。 js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。 只要协议、域名、端口有任何一个不同,都被当作是不同的域。 下面介绍几种常用的跨域请求方式 默认端口为:8080
柴小智
2018/04/10
1.4K0
跨域请求的常用方式及解释
AJAX 与跨域通信(三):跨域解决方案
承接上文,继续补充跨域方案:postMessage、location.hash、WebSocket、Nginx 反向代理、Nodejs 中间件代理。
Chor
2019/11/12
8370
跨域请求方案 终极版
现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。
互扯程序
2018/07/30
3.8K0
什么是跨域以及几种简单解决方案
同源策略就是用来限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。那怎样判断是否是同源呢?
lyb-geek
2022/03/10
5450
浏览器同源策略及跨域的解决方法
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说 Web 是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
laixiangran
2018/07/25
1.6K0
浏览器同源策略及跨域的解决方法
WEB 前端跨域解决方案
2.) 资源嵌入: <link> 、 <script> 、 <img/> 、 <frame> 等 dom 标签,还有样式中 background:url() 、 @font-face() 等文件外链
chuchur
2022/10/25
9430
学员投稿 | iframe 解决跨域
天气降温,大家注意保暖~~~ 因为学习了腾讯课堂NEXT学院的前端进阶课程,所以打算把课程内容都总结一遍。有些都是很普通很常见的知识,但是为了巩固自己的知识面,梳理自己的知识树,所以每个知识点都会写成文章,所有文章都会放在公众号右下角的前端进阶课程总结中~~~也希望能够帮助到需要的人~~ 跨域的东西, 简直不要接触太多,网上相关内容一抓一大把,但是突然学习到一个关于前端解决跨域的方式 就是 利用 iframe  不管你有没有了解过,反正我没有 我觉得很有用并且容易忘,所以我记录下来哈哈哈 下面
腾讯NEXT学位
2019/11/18
2.5K0
学员投稿 | iframe 解决跨域
相关推荐
js中几种实用的跨域方法原理详解
更多 >
LV.1
HTML5学堂(码匠)创始人
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文