iframe跨域上传
① jquery操作跨域iframe
修改被引入的iframe页面呗?还有什么更好的办法,不打一句代码就出出现结果码 开玩笑
② C# 跨域上传文件
不可以
解决办法只能是在一个域上做好上传文件的页,
然后在另一个域的一个页上用iframe嵌套这个页上传。
两站间用post或者get传递参数
③ 如何使用DWR实现跨域推送注意不是跨域访问是跨域推送~
1.基于iframe实现跨域
基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的函数,代码如下:
页面一:
Html代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<script>
document.domain = "xx.com";
function aa(){
alert("p");
}
</script>
</head>
<body>
<iframe src="http://localhost:8080/CmsUI/2.html" id="i">
</iframe>
<script>
document.getElementById('i').onload = function(){
var d = document.getElementById('i').contentWindow;
d.a();
};
</script>
</body>
</html>
页面二:
Html代码
?
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<script>
document.domain = "xx.com";
function a(){
alert("c");
}
</script>
</head>
<body>
</body>
</html>
这时候父页面就可以调用子页面的a函数,实现js跨域访问
2.基于script标签实现跨域
script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态创建script标签,代码如下:
java代码
?
1
2
3
var script = document.createElement('script');
script.src = "http://aa.xx.com/js/*.js";
document.body.appendChild(script);
这样通过动态创建script标签就可以加载其它域的js文件,然后通过本页面就可以调用加载后js文件的函数,这样做的缺陷就是不能加载其它域的文档,只能是js文件,jsonp便是通过这种方式实现的,jsonp通过向其它域传入一个callback参数,通过其他域的后台将callback参数值和json串包装成javascript函数返回,因为是通过script标签发出的请求,浏览器会将返回来的字符串按照javascript进行解析执行,实现了域与域之间的数据传输。
jquery中对jsonp的支持也是基于此方案。
3.后台代理方式
这种方式可以解决所有跨域问题,也就是将后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟http请求去访问其它域,再将返回的结果返回给前台,这样做的好处是,无论访问的是文档,还是js文件都可以实现跨域。
④ 如何使用iframe实现跨域写入cookie 并且兼容大部分浏览器
请首先修改hosts文件来模拟本机跨域
127.0.0.1 localhost
127.0.0.1 b.com
127.0.0.1 a.com
我们的目的:
由a.com登录,如果登录成功,就生成a.com的cookie。而对于b.com则无需再次登录。
遇到的困难:
浏览器同源策略限制,即A站点页面的脚本是无法直接操纵B站点的内容。
试想如果所有第三方网站都可以对taobao.com的首页任意篡改,那这个社会还有什么安全性可言呢?
其实浏览器的安全策略逻辑很简单,就是我的地盘我做主,出了我的地盘我做不了主。
解决方案:
a.com根据用户输入操作a.com的cookie,b.com根据用户在a.com得到的输入数据来操作b.com的cookie。
如何在a.com用户输入a.com的用户数据时同时提交到b.com的验证页面呢?
这时候iframe就派上用场了。
相关代码:
<form method="post" action="<?php print $b?>setcookie.php" target="ifrm" ><fieldset>
<legend>跨域获取cookie</legend>
<b>用户名</b>
<p>
<input type="text" id ="username" name="username"/>
</p>
<p><button onclick="login()" type="submit">Login</button></p>
</fieldset>
</form>
...
<iframe id ="ifrm" name="ifrm" style="display:none;" src="<?php print $b?>setcookie.php" />
请注意form表单的相关属性,b.com/setcookie.php页面就是验证a.com用户的输入然后生成b.com的cookie,这样后续访问b.com无需再次输入用户名和密码。
缺点:
需要先设置跨域站点的cookie然后再来设置本域的cookie;
如果跨域站点请求耗时较长,直接影响本域的操作时间;
另外也需要额外的代码来处理跨域站点请求失败后的操作
IE中需要设置接受cookie(隐私),这一点比较不方便。
附件:/Files/1000/xdm.rar
测试方法:
1)按文章开头修改hosts文件
2)登录a.com/default.php
3)输入表单数据
4)点击a.com/default.php下面的链接就可以在b.com/getcookie.php看到b.com的cookie
⑤ 实现Iframe内文件的上传
我知道你的意思,你是想实现那种所谓的“无刷新上传文件”吧
呵呵。。。
给你个思路,在页面内部上传文件你应该是会的,这个就不用说了,就是加了iframe之后需要在外部得到上传文件的路径,然后保存到服务器,这个可能是你不知道怎么弄的问题吧,(我是猜的,因为既然你能提出这样的问题,应该说明不加iframe的本页上传你是会的)
你应该这样做,这个按钮写在iframe内部,就用它实现上传,直接上传,然后需要在iframe的外部调用它的页面得到路径
类似a.html中有个<iframe src="b.aspx"></iframe>
1、把按钮写在b.aspx,并且定义一个隐藏域,暂定为<input type="hidden" id="filePath_hidden" runat="server" />
这个隐藏域可以由后台赋值
2、点击按钮,用你的C#代码上传文件,并且将路径保存到filePath_hidden里面,filePath_hidden.value=路径;
剩下的,我写起来比较费时间,而且代码比较多,但是不复杂,相信你一看就知道了,得到b.aspx内部filePath_hidden的值就好办了
具体看到http://58.51.84.58:81里面去,注册一个会员,然后进入会员中心,修改资料那里,我就是这么实现的,内部有个iframe,指向上传文件的文件,在外部如何保存数据的,在会员中心那个页面你可以查看源代码,看看,如果将iframe内部的数据返回给外部。得到iframe内部的数据,在外部就可以像平时那样保存数据了,
声明,这个网站只是我给别的公司做的一个企业网站,因为我在这里写的比较多,你可以直接去参考,不是做广告,那个公司跟我们公司没有任何关系
既然你说用asp.net回答,那么我就告诉你,那只有一种办法,就是在内部上传之后用session保存(Cookie也可以)
session["路径"]=路径;
之后在外部页面调用这个session值就可以了,
⑥ ajax如何实现跨域上传文件
ajax跨域实现方法之跨子域实现ajax:
要求:实现hello.com的页面 异步请求 blog.hello.com下的页面
实现方法:借助iframe,通过设置iframe的src属性,嵌入blog.hello.com下的一个页面,比如AjaxProxy.jsp,然后由该页面去请求Ajax
AjaxProxy请求完毕后,通过parent对象把返回的数据回传给hello.com的主页面。因此,真正的异步请求还是发生在blog.hello.com的域名下
注意:通过这种方法实现的跨子域ajax请求,需要在hello.com的请求页面以及AjaxProxy.jsp页面中设置同样的域名,也就是document.domain = "coolkissbh.com";
注意:关于设置domain的问题,如果是跨全域,使用上面方法时候,firefox下会提示
Illegal document.domain value" code: "1009的错误,因此跨全域只能使用第二种方法处理返回的数据:AjaxProxy.jsp将ajax返回的数据保存到一个全局变量中,hello.com通过setInterval定时去判断iframe的页面是否加载完成,如果加载完成,则获取AjaxProxy.jsp的全局变量值。然后再做其它处理。
⑦ 什么是跨域,跨域的实现方式有哪些
跨域:
浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了.
实现方式:
基于script标签实现跨域
基于script标签实现跨域
基于jquery跨域
通过iframe来跨子域
⑧ 父窗口嵌入iframe实现跨域,iframe里可以用localstorage吗
框架的嵌套是通过页面实现的,而不是两个IFRAME标签嵌套写在一起就能实现的.你需要outerIframe所加载的页面中插入IFRAME标签来嵌入另一个页面.
⑨ iframe 下不同域下的ajax请求跨域
不久前..我的同事遇到了这个问题..然后我想要一个小的方式来解决。
事实上,一些网上JS跨域解决方案。那么我们不注意..但后来发现..方法和网上的方法几乎是类似的..
关于JS跨域权限确实遇到问题..
1如果主域名下的相同的不同子域可以指定document.domain的就可以了。的document.domain =相同的域
。使用方法臻2是iframe中,有时不使用Ajax是最好的..虽然我平时写的爱情与阿贾克斯阿贾克斯..但往往解决不了问题......有人说,之后,W3C已经给出了使用AJAX的跨域解决方案......但在这个阶段它仍然是老实点
关于前两种方法好说话。
我们使用的是...把一个iframe ...的页面,然后在iframe的src =“ XXXX“目标=”_blank“> http://192.168.3.44/actionSubmit.aspcallFunction=xxxx 的”或URI的一部分,您可以指定任何数据的识别..
然后起床此页面上3.44这个参数..然后确定相应的参数值?是合法的..可以
执行相应的程序..
希望能够帮助您^ _ ^我不回答很长一段时间。问题给我。哦! !