如何解决IFrame 跨域问题 实例证明可行许多网友认为这个无法实现

先说下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

原文地址:https://www.cnblogs.com/EntityFramework/p/3046594.html