Javascript 跨域表单提交状态的变相判断

2016-02-19 15:53 0 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐Javascript 跨域表单提交状态的变相判断,无聊中的都看过来。

【 tulaoshi.com - Web开发 】

通过表单在iframe内向一个跨域的url提交的时候,如何判断提交成功了呢?
这个,基本上,很难,因为浏览器安全沙箱的限制,我们没有办法通过获得iframe内部不同域页面的信息。换种思维,如果开始可以获得iframe内部页面信息,那么不能获得的时候,不就说明表单已经提交了么~
百度提供给竞价用户使用的商务中心留言本就是采用此方法。

示例:

test.html:

 程序代码
html
headmeta http-equiv="Content-Type" content="text/html; charset=gb2312"/head
body style="background:#a7a7a7;"
iframe id="testiframe" name="testiframe"/iframe
form method="post" action="http://www.test.com/testaction.asp" target="testiframe" name="testform"
input type="text" name="dddd"input type="submit" value="ddd" name="submitbtn"/
/form
/body
script
document.testform.onsubmit = function () {
    document.testform.submitbtn.disabled = true;
    submitMonitor();

}
function submitMonitor () {
    try{
        var hash = document.getElementById('testiframe').contentWindow.location.hash;
        setTimeout(submitMonitor,100);
    } catch (e) {
        document.getElementById('testiframe').src = "about:blank";
        document.testform.submitbtn.disabled = false;
    }
}
/script
/html

testaction.asp

 程序代码
%
Function Sleep(n) '单位秒s
Dim StartTime
StartTime = Timer
Do : Loop Until Timern+StartTime
End Function

Sleep(5) '延时5秒

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

Response.Write Request.Form("dddd")
%

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

弊端:

这个弊端还很明显,如果是404,403,500等错误,也会误认为是成功提交,不过可以在

 程序代码

setTimeout(submitMonitor,100);

函数前增加客户端表单检查,来尽量避免此问题。

当然,跨域表单提交状态判断也可以用服务器端输出alert脚本来实现。

来源:https://www.tulaoshi.com/n/20160219/1610634.html

延伸阅读
标签: Web开发
script lanuage="javascript" var global="javascript"; test(); funciton test() { var local="vbscript" document.write("the global is"+gloabl+"br"); document.write("the local is"+local+"br"); } document.write("local"); /script ---------------------------------- 错误local已经释放掉了,它的作用域是函数范围内 script languag...
标签: PHP
转自:http://www1.blog.163.com/article/-Bov--vjmSMl.html 你是否遇到过重复提交的问题?要解决这个问题其实并不难。这里有一个简单的方法避免同一表单的重复提交。 首先,我们可以定义一个session变量用来保存一个表单的提交序列号。这里我定义为$userLastAction。然后在表单里加入一个hidden变量,把值设为$userLastAction...
标签: Web开发
Xsstc: Cross-site scripting through CSS data,看名字就看出来了,通过CSS跨站运行script,使用方法: 导入xsstcx.js(未压缩版xsstc.js) 添加一个id=”Xsstc”的空DIV。 在JS中调用Xsstc.exec(functionURL, callback),使用的内容作为callback的参数传入callback中 其中CSS的定义也有要求,下面是Hello World中CSS...
标签: Web开发
网页制作Webjx文章简介:要解决ajax跨域问题,网上给出的方法有二. 要解决ajax跨域问题,网上给出的方法有二: 1是构建服务器端的代理。简而言之,就是ajax中调用的实质还是本机的url,而服务器端替js去取回远端地址。 2.利用script标记,生成一个标签。在js加载完成后,再执行后续操作。 就是将原来新建xmlHTT...
标签: ASP
  <% '从表单中提取值 fName = request.form("fName") lName = request.form("lName") age = request.form("age") '建立SQL语句 iStr = "insert into uData (fName, lName, age) " iStr = iStr & "values (" iStr = iStr & "'" & fName & "', &quo...

经验教程

955

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部