zoukankan      html  css  js  c++  java
  • 如何解决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

  • 相关阅读:
    Rancher安装
    JDK8日期时间对象
    String经典面试题
    String
    单例模式
    多线程
    接口
    代码块
    内存吞金兽(Elasticsearch)的那些事儿 -- 常见问题痛点及解决方案
    内存吞金兽(Elasticsearch)的那些事儿 -- 写入&检索原理
  • 原文地址:https://www.cnblogs.com/EntityFramework/p/3046594.html
Copyright © 2011-2022 走看看