【发布时间】: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 中,并让所有用户执行任何点击。 条件:框架中的点击应该刷新框架,而不是跳出新页面。
【问题讨论】: