【问题标题】:I am trying to Post Data to an Iframe in asp.net. The post is performed using HTTPRequest and HTTPResponse我正在尝试将数据发布到 asp.net 中的 iframe。帖子是使用 HTTPRequest 和 HTTPResponse 执行的
【发布时间】:2011-09-23 16:30:44
【问题描述】:

我正在尝试实施单点登录,允许用户登录多个供应商。每个供应商都有需要作为表单帖子发送的令牌。我将此令牌发布为 HTTPRequest 并像下面的代码一样获取响应

private static string PostDataToServerAndGetResponse()
{
Uri uri = new Uri("http://www.amazon.com/exec/obidos/search-handle-form/102-5194535-6807312");
string data = "field-keywords=ASP.NET 2.0";
        if (uri.Scheme == Uri.UriSchemeHttp)
        {

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
            request.Method = WebRequestMethods.Http.Post;
            request.ContentLength = data.Length;
            request.ContentType = "application/x-www-form-urlencoded";
            StreamWriter writer = new StreamWriter(request.GetRequestStream());
            writer.Write(data);
            writer.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            string tmp = reader.ReadToEnd();
            response.Close();
            //return response.ResponseUri.AbsoluteUri;
            return tmp;

        }

        return null;
}

返回值 - tmp 是一个 HTML 字符串,我想将其显示到 Iframe 中。我可以通过在 iframe 中添加 Literal 控件并将 text 属性设置为上述函数返回的值来做到这一点

<iframe  id="myIFrame" runat="server"  height="700" width="950"  frameborder="0" />
    <asp:Literal ID="litFrame" runat="server" Mode="PassThrough" />

 </iframe>

 litFrame.Text = SAML.PostDataToServerAndGetResponse();

上面的代码很好地显示了页面,但是当我点击任何链接时,它会打开一个新页面。
没有明显的 framebusting java 脚本,因为如果我将 iframe 的 'src' 属性设置为 response.ResponseUri.AbsoluteUri,所有的点击和页面刷新都会留在框架中。

我想要达到的目标

将帖子的结果显示到 iframe 中,并让所有用户执行任何点击。 条件:框架中的点击应该刷新框架,而不是跳出新页面。

【问题讨论】:

    标签: asp.net iframe


    【解决方案1】:

    iframe 不会按照您的想法工作。 &lt;iframe&gt; 标记内的内容仅在浏览器不支持该标记时才显示,而不是 iframe 的默认内容。我很惊讶你在页面上看到你的任何文字内容 - 在你的 html 源代码中实际上有 &lt;iframe&gt; 输出,还是 ASP.NET 变得“智能”并输出不同的东西?

    真的,您的选择是:

    • 将 iframe 的 url 设置为将在 iframe 中生成所需内容的页面/处理程序/等(即,该页面调用您的 PostDataToServerAndGetResponse 方法)
    • 使用javascript将内容写入iframe
    • 您可以将&lt;form&gt; 的目标设置为 iframe,并将数据发布到它

    我会说选项 1 是最简单/最干净的。

    【讨论】:

    • 你是对的。我真的没有在文字之前有一个结束标签 - 这就是显示数据的原因。问题)我将如何使用 javascript 来编写框架的内容。我不知道我是否可以使用选项 1,因为您可以看到我从亚马逊(或其他外部网站)获取数据
    • 关于选项1,你不能创建另一个页面,比如'GetAmazonInfo.aspx',然后在那个页面中,它是否按照上面的方法输出内容?那么 iframe 的 src 就是那个新的 GetAmazonInfo.aspx 页面。
    • 谢谢非常感谢。
    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多