先说下A网站有2个(Iframe1 name=“content” , Iframe2)
首先A网站Iframe2 引用的是B网站的页面c,B网站页面c的链接内容全部显示再这个IFrame1中。 开始 我以为 只要在B网站的链接 上加个 target=“content ” 就能解决 后来实践证明 不行,效果只是跳出了这个页面,没有在Iframe中显示。 后来我又想到 用js动态 改变Iframe 的src 属性的值, 结果Iframe src 无法实现跨域更改(同一个网站是可以的)。(如果这个可以实现,个人认为 这是个很大的安全漏洞。)
那 我们该 如何实现呢? 我们上面说过 同一个网站是可以的,那么我们可以把B网站的页面的HTML 值 获取出来 显示在A 页面上不就可以了吗.
具体的实现方式其实很简单: 我的实现方式在mvc 中 其实在aspx 或者其他的 开发方式都是可行的
action 代码:
public ActionResult baidu()
{
//为指定的URI打开一个可读的数据流,并定义一个该流的引用
WebClient wc = new WebClient();
var host = System.Configuration.ConfigurationManager.AppSettings["OAHost"];
Stream resStream = wc.OpenRead(host + "Main/NopMenuTree.aspx?id=itsoft"); //这个URL是B页面C的地址
//根据上面定义的数据流,以默认编码的方式定义一个读数据流
StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
// 读取数据流中的内容
var str = sr.ReadToEnd();//这个就是B页面C的Html的代码
NewsItemModel model = new NewsItemModel();
model.SeName = str;
//关闭数据流
resStream.Close();
//释放资源
wc.Dispose();
return View(model);
}
View 的代码就更简单了:
@model Nop.Admin.Models.News.NewsItemModel @{ Layout = "";//使这个页面不使用模板 } @Html.Raw(Model.SeName)
看到这里 我想大家也都明白是如何实现的了, Iframe1 引用就引用这个页面就能解决 跨域的问题。
有什么意见 或者疑问 可以联系我 : 545036370@qq.com